| Parley documentation | Contained in the Parley distribution. |
Parley::App::Communication::Email - email helper functions
use Parley::App::Communication::Email; send_email($c, $options);
Chisel Wright <chiselwright@users.berlios.de>
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| Parley documentation | Contained in the Parley distribution. |
package Parley::App::Communication::Email; # vim: ts=8 sts=4 et sw=4 sr sta use strict; use warnings; use Parley::Version; our $VERSION = $Parley::VERSION; use Perl6::Export::Attrs; use Parley::App::I18N qw( :locale ); sub queue_email :Export( :email ) { my ($c, $options) = @_; $c->log->info('queuing an email'); eval { my $queued_mail = $c->model('ParleyDB')->resultset('EmailQueue')->create( { sender => $options->{headers}{from} || q{Missing From <chisel@somewhere.com>}, recipient_id => $options->{recipient}->id() || 0, subject => $options->{headers}{subject} || q{Subject Line Missing}, text_content => $options->{text_content} || q{Email Body Text Missing}, html_content => $options->{html_content} || undef, } ); }; if ($@) { $c->log->error($@); return; } $c->log->info('email queued'); return 1; # success } sub send_email :Export( :email ) { my ($c, $options) = @_; my ($text_content, $html_content, $email_status); my $locale = first_valid_locale($c, [qw/email_templates/]); $c->log->debug('first_valid_locale is: ' . $locale); # preparing for future expansion, where we intend to build multipart emails # and we'll be using ->{template}{text} and ->{template}{html} if ( exists $options->{template} and ref($options->{template}) ne 'HASH' ) { $c->log->warn( q{DEPRECATED use of ->{template} = 'file.eml'} . q{: plain-text template name should be stored in } . q{->{template}{text} instead of ->{template}} ); # put the data in the right place my $tpl_name = $options->{template}; $options->{template} = {}; $options->{template}{text} = $tpl_name; } # we don't send anything immediately ... push it into the queue of outgoing # messages # prepare the text content portion of the message - we read this from a # [template] file which we render $c->log->info( $c->path_to( 'root', 'email_templates', $locale ) ); $text_content = $c->view('Plain')->render( $c, $options->{template}{text}, { additional_template_paths => [ $c->path_to( 'root', 'email_templates', $locale ) ], # automatically make the person data available person => $options->{person}, # pass through extra TT data %{ $options->{template_data} || {} }, } ); # if we have html_content, prepare that for queueing if (defined $options->{template}{html}) { $html_content = $c->view('Plain')->render( $c, $options->{template}{html}, { #additional_template_paths => [ $c->config->{root} . q{/email_templates}], additional_template_paths => [ $c->path_to( 'root', 'email_templates', $locale ) ], # automatically make the person data available person => $options->{person}, # pass through extra TT data %{ $options->{template_data} || {} }, } ); } # queue the message $email_status = $c->queue_email( { headers => { from => $options->{headers}{from} || q{Missing From <missing.from@localhost>}, subject => $options->{headers}{subject} || q{Subject Line Missing}, }, recipient => $options->{person}, text_content => $text_content, html_content => $html_content, }, ); # did we queue the email OK? if ($email_status) { $c->log->info( q{send_email(} . $options->{person}->email() . q{): } . $email_status ); return 1; } else { $c->log->error( $email_status ); $c->stash->{error}{message} = $c->localize(q{EMAIL SEND PROBLEM}); return 0; } } 1; __END__