App-Framework
view release on metacpan or search on metacpan
lib/App/Framework/Feature/Mail.pm view on Meta::CPAN
my $from = $this->from ;
my $mail_to = $this->to ;
my $subject = $this->subject ;
my $host = $this->host ;
## error check
$this->throw_fatal("Mail: not specified 'from' field") unless $from ;
$this->throw_fatal("Mail: not specified 'to' field") unless $mail_to ;
$this->throw_fatal("Mail: not specified 'host' field") unless $host ;
my @content ;
if (ref($content) eq 'ARRAY')
{
@content = @$content ;
}
elsif (!ref($content))
{
@content = split /\n/, $content ;
}
## For each recipient, need to send a separate mail
my @to = split /,/, $mail_to ;
foreach my $to (@to)
{
my $smtp = Net::SMTP->new($host); # connect to an SMTP server
$this->throw_fatal("Mail: unable to connect to '$host'") unless $smtp ;
$smtp->mail($from); # use the sender's address here
$smtp->to($to); # recipient's address
$smtp->data(); # Start the mail
# Send the header.
$smtp->datasend("To: $mail_to\n");
$smtp->datasend("From: $from\n");
$smtp->datasend("Subject: $subject\n") if $subject ;
# Send the body.
$smtp->datasend("$_\n") foreach (@content) ;
$smtp->dataend(); # Finish sending the mail
$smtp->quit; # Close the SMTP connection
}
}
#----------------------------------------------------------------------------
=item B< Mail([%args]) >
Alias to L</mail>
=cut
*Mail = \&mail ;
#----------------------------------------------------------------------------
=item B<application_entry()>
Called by the application framework at the start of the application.
This method checks for the user specifying any of the options described above (see L</ADDITIONAL COMMAND LINE OPTIONS>) and handles
them if so.
=cut
sub application_entry
{
my $this = shift ;
$this->_dbg_prt(["application_entry()\n"], 2) ;
## Handle special options
my $app = $this->app ;
my %opts = $app->options() ;
$this->_dbg_prt(["mail options=",\%opts], 2) ;
## Map from options to object data
foreach my $opt_entry_aref (@OPTIONS)
{
my $opt = $opt_entry_aref->[0] ;
if ($opts{$opt})
{
my $field = $opt ;
$field =~ s/[-]/_/g ;
$field =~ s/^mail\-// ;
$this->set($field => $opts{$opt}) ;
}
}
}
#--------------------------------------------------------------------------------------------
=item B< catch_error_entry($error) >
Send some mail stored in $content. $content may either be a string (containing newlines), or an
ARRAY ref.
Optionally %args may be specified (to set 'subject' etc)
=cut
sub catch_error_entry
{
my $this = shift ;
my ($error) = @_ ;
## skip if already inside an error
return if $this->_caught_error ;
my $from = $this->from ;
my $error_to = $this->error_to ;
my $app = $this->app ;
$this->_dbg_prt(["catch_error_entry() : from=$from error-to=$error_to app=$app\n"]) ;
$this->_dbg_prt(["error=", $error], 5) ;
( run in 0.576 second using v1.01-cache-2.11-cpan-e1769b4cff6 )