[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