App-Framework
view release on metacpan or search on metacpan
lib/App/Framework/Feature/Mail.pm view on Meta::CPAN
=cut
sub init_class
{
my $class = shift ;
my (%args) = @_ ;
# Add extra fields
$class->add_fields(\%FIELDS, \%args) ;
# init class
$class->SUPER::init_class(%args) ;
}
#============================================================================================
=back
=head2 OBJECT METHODS
=over 4
=cut
#============================================================================================
#--------------------------------------------------------------------------------------------
=item B< mail($content [, %args]) >
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).
If no arguments are specified then just returns the mail object.
=cut
sub mail
{
my $this = shift ;
my ($content, %args) = @_ ;
return $this unless $content ;
$this->_dbg_prt(["mail() : content=\"$content\"\n"]) ;
$this->set(%args) ;
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 ;
( run in 0.493 second using v1.01-cache-2.11-cpan-39bf76dae61 )