Cataly...emplate(3pm)

πŸ“¦
version 0.36 Β· 5 versions
, in debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

✨ NAME ✨

Catalyst::View::Email::Template β€” it's giving Send Templated Email from Catalyst πŸ’Œ

okay so real talk: this is a 3pm perl manpage from the User Contributed Perl Documentation, and its whole personality is making your Catalyst app send templated email like it's nothing. no cap. 🫢


πŸ¦‹ SYNOPSIS πŸ¦‹

It sends templated mail, based upon your default view. Basically it grabs the output of the rendering path, slurps it in based on mime-types, and then assembles a multi-part email using Email::MIME::Creator and sends it out. it's giving "I do all the assembling, you just vibe." ✨


πŸŽ€ CONFIGURATION πŸŽ€

WARNING: since version 0.10 the configuration options slightly changed! not me warning you, this is literally in the docs πŸ’€

Use the helper to create your view:

$ script/myapp_create.pl view Email::Template Email::Template

For basic configuration look at "CONFIGURATION" in Catalyst::View::Email.

In your app configuration (example in YAML):

View::Email::Template:
    # Optional prefix to look somewhere under the existing configured
    # template  paths.
    # Default: none
    template_prefix: email
    # Define the defaults for the mail
    default:
        # Defines the default view used to render the templates.
        # If none is specified neither here nor in the stash
        # Catalysts default view is used.
        # Warning: if you don't tell Catalyst explicit which of your views should
        # be its default one, C::V::Email::Template may choose the wrong one!
        view: TT

So like, breaking down the vibes: 🌸

  • template_prefix β€” an optional prefix so you can look somewhere under the existing configured template paths. Default: none.
  • default β€” the defaults for the mail.
    • view β€” the default view used to render the templates. If none is specified, neither here nor in the stash, then Catalyst's default view gets used.
Warning: if you don't tell Catalyst explicitly which of your views should be its default one, C::V::Email::Template may choose the wrong one! main character energy gone wrong, bestie, please be specific πŸ™ˆ

πŸ’Œ SENDING EMAIL πŸ’Œ

Sending email works just like for Catalyst::View::Email, but instead of the body you specify the template, and then you forward to your Email::Template view:

sub controller : Private {
    my ( $self, $c ) = @_;

    $c->stash->{email} = {
        to          => 'jshirley@gmail.com',
        cc          => 'abraxxa@cpan.org',
        from        => 'no-reply@foobar.com',
        subject     => 'I am a Catalyst generated email',
        template    => 'test.tt',
        content_type => 'multipart/alternative'
    };

    $c->forward( $c->view('Email::Template') );
}

Alternatively, if you want more control over your templates you can use the following idiom to override the defaults. If charset and encoding are given, the body becomes properly encoded. πŸ’…

templates => [
    {
        template        => 'email/test.html.tt',
        content_type    => 'text/html',
        charset         => 'utf-8',
        encoding        => 'quoted-printable',
        view            => 'TT',
    },
    {
        template        => 'email/test.plain.mason',
        content_type    => 'text/plain',
        charset         => 'utf-8',
        encoding        => 'quoted-printable',
        view            => 'Mason',
    }
]

😭 HANDLING ERRORS 😭

See "HANDLING ERRORS" in Catalyst::View::Email. yeah, it's a whole other page, go read it, iykyk 🫢


🧚 METHODS 🧚

generate_part

Generates a MIME part to include in the email. Since the email is template based, every template piece is a separate part that gets included in the email. it's giving "one part per vibe" ✨

process

The process method is called when the view is dispatched to. This creates the multipart message and then sends the message contents off to Catalyst::View::Email for processing, which in turn hands off to Email::Sender::Simple. iconic relay race honestly πŸƒβ€β™€οΈ


πŸ‘‘ TODO πŸ‘‘

ATTACHMENTS

There needs to be a method to support attachments. What the author is thinking is something along these lines:

attachments => [
    # Set the body to a file handle object, specify content_type and
    # the file name. (name is what it is sent at, not the file)
    { body => $fh, name => "foo.pdf", content_type => "application/pdf" },
    # Or, specify a filename that is added, and hey, encoding!
    { filename => "foo.gif", name => "foo.gif", content_type => "application/pdf", encoding => "quoted-printable" },
    # Or, just a path to a file, and do some guesswork for the content type
    "/path/to/somefile.pdf",
]

not shipped yet, bestie, this is a wishlist πŸŽ€


πŸ”₯ SEE ALSO πŸ”₯

  • Catalyst::View::Email β€” Send plain boring emails with Catalyst
  • Catalyst::Manual β€” The Catalyst Manual
  • Catalyst::Manual::Cookbook β€” The Catalyst Cookbook

πŸ’– AUTHORS πŸ’–

  • J. Shirley <jshirley@gmail.com>
  • Simon Elliott <cpan@browsing.co.uk>
  • Alexander Hartmaier <abraxxa@cpan.org>

🌈 LICENSE 🌈

This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. slay, open source queen πŸ‘‘


and that's the whole page, babe β€” perl v5.38.2, dated 2024-03-04, from the Cataly...emplate(3pm) file. go forth and send emails πŸ’–βœ¨

πŸ“¦ where this page comes from