[Catalyst-commits] r12729 - in Catalyst-View-Email/trunk: . lib/Catalyst/View

apeiron at dev.catalyst.perl.org apeiron at dev.catalyst.perl.org
Tue Jan 26 11:47:17 GMT 2010


Author: apeiron
Date: 2010-01-26 11:47:14 +0000 (Tue, 26 Jan 2010)
New Revision: 12729

Modified:
   Catalyst-View-Email/trunk/Changes
   Catalyst-View-Email/trunk/dist.ini
   Catalyst-View-Email/trunk/lib/Catalyst/View/Email.pm
Log:
Fix the transport handling so that transports other than the sendmail default
work.


Modified: Catalyst-View-Email/trunk/Changes
===================================================================
--- Catalyst-View-Email/trunk/Changes	2010-01-25 19:00:17 UTC (rev 12728)
+++ Catalyst-View-Email/trunk/Changes	2010-01-26 11:47:14 UTC (rev 12729)
@@ -1,5 +1,8 @@
 Revision history for Perl extension Catalyst::View::Email.
 
+0.20    2010-01-26
+        - fix transport instantiation thanks to Chris Nehren <apeiron at cpan.org>
+
 0.19    2010-01-18
         - fixed optional dependencies
 		- added META stuff back in

Modified: Catalyst-View-Email/trunk/dist.ini
===================================================================
--- Catalyst-View-Email/trunk/dist.ini	2010-01-25 19:00:17 UTC (rev 12728)
+++ Catalyst-View-Email/trunk/dist.ini	2010-01-26 11:47:14 UTC (rev 12729)
@@ -1,13 +1,13 @@
 name = Catalyst-View-Email
 author = J. Shirley <jshirley at gmail.com>
-version = 0.19
+version = 0.20
 license = Perl_5
 copyright_holder = J. Shirley
 
 [@Classic]
 
 [MetaResources]
-repository = http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-View-Email/0.10/
+repository = http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-View-Email
 
 
 

Modified: Catalyst-View-Email/trunk/lib/Catalyst/View/Email.pm
===================================================================
--- Catalyst-View-Email/trunk/lib/Catalyst/View/Email.pm	2010-01-25 19:00:17 UTC (rev 12728)
+++ Catalyst-View-Email/trunk/lib/Catalyst/View/Email.pm	2010-01-26 11:47:14 UTC (rev 12729)
@@ -6,18 +6,24 @@
 use Encode qw(encode decode);
 use Email::Sender::Simple qw/ sendmail /;
 use Email::MIME::Creator;
-use Email::Sender::Transport;
 extends 'Catalyst::View';
 
 our $VERSION = '0.19';
 
-has 'transport' => (
+has 'mailer' => (
     is      => 'rw',
     isa     => 'Str',
     lazy    => 1,
-    default => sub { }
+    default => sub { "sendmail" }
 );
 
+has '_mailer_obj' => (
+    is      => 'rw',
+    isa     => 'Email::Sender::Transport',
+    lazy    => 1,
+    builder => '_build_mailer_obj',
+);
+
 has 'stash_key' => (
     is      => 'rw',
     isa     => 'Str',
@@ -36,7 +42,7 @@
     is      => 'rw',
     isa     => 'HashRef',
     lazy    => 1,
-    default => sub { { mailer => shift->transport } }
+    default => sub { { mailer => shift->mailer } }
 );
 
 has 'content_type' => (
@@ -46,17 +52,14 @@
 	lazy    => 1,
 );
 
-has "_transport" => (
-    is      => 'rw',
-	isa     => 'Str',
-	default => sub {}
-	lazy    => 1,
-);
-
 =head1 NAME
 
 Catalyst::View::Email - Send Email from Catalyst
 
+=head1 VERSION
+
+version 0.19
+
 =head1 SYNOPSIS
 
 This module sends out emails from a stash key specified in the
@@ -93,10 +96,12 @@
             # Setup how to send the email
             # all those options are passed directly to Email::Send
             sender => {
+                # if mailer doesn't start with Email::Sender::Transport::,
+                # then this is prepended.
                 mailer => 'SMTP',
                 # mailer_args is passed directly into Email::Send 
                 mailer_args => {
-                    Host     => 'smtp.example.com', # defaults to localhost
+                    host     => 'smtp.example.com', # defaults to localhost
                     username => 'username',
                     password => 'password',
             }
@@ -106,7 +111,7 @@
 
 =head1 NOTE ON SMTP
 
-If you use SMTP and don't specify Host, it will default to localhost and
+If you use SMTP and don't specify host, it will default to localhost and
 attempt delivery. This often means an email will sit in a queue and
 not be delivered.
 
@@ -186,7 +191,7 @@
 
 =item new
 
-Validates the base config and creates the L<Email::Sender::Simple> object for later use
+Validates the base config and creates the L<Email::Send> object for later use
 by process.
 
 =cut
@@ -200,6 +205,20 @@
 
 }
 
+sub _build_mailer_obj {
+  my ($self) = @_;
+  my $transport_class = ucfirst $self->sender->{mailer};
+
+  # borrowed from Email::Sender::Simple -- apeiron, 2010-01-26 
+  if ($transport_class !~ /^Email::Sender::Transport::/) {
+    $transport_class = "Email::Sender::Transport::$transport_class";
+  }
+
+  Class::MOP::load_class($transport_class);
+
+  return $transport_class->new($self->sender->{mailer_args} || {});
+}
+
 =item process($c)
 
 The process method does the actual processing when the view is dispatched to.
@@ -213,7 +232,7 @@
     my ( $self, $c ) = @_;
 
     croak "Unable to send mail, bad mail configuration"
-      unless $self->mailer;
+      unless $self->sender->{mailer};
 
     my $email = $c->stash->{ $self->stash_key };
     croak "Can't send email without a valid email structure"
@@ -267,7 +286,7 @@
     my $message = $self->generate_message( $c, \%mime );
 
     if ($message) {
-        my $return = sendmail( $message, { transport => $self->mailer } );
+        my $return = sendmail( $message, { transport => $self->_mailer_obj } );
 
         # return is a Return::Value object, so this will stringify as the error
         # in the case of a failure.
@@ -346,6 +365,7 @@
 
 =back
 
+
 =head1 TROUBLESHOOTING
 
 As with most things computer related, things break.  Email even more so.  
@@ -394,6 +414,8 @@
 
 Devin Austin <dhoss at cpan.org>
 
+Chris Nehren <apeiron at cpan.org>
+
 =head1 COPYRIGHT
 
 Copyright (c) 2007 - 2009




More information about the Catalyst-commits mailing list