Agent-TCLI-Package-Net
view release on metacpan or search on metacpan
lib/Agent/TCLI/Package/Net/SMTP.pm view on Meta::CPAN
}
sub _stop {
my ($kernel, $self,) =
@_[KERNEL, OBJECT,];
$self->Verbose("_stop: ".$self->name." stopping",2);
}
sub SendMailSuccess {
my ($kernel, $self, $request) =
@_[KERNEL, OBJECT, ARG0];
$request->Respond($kernel,"OK", 200);
return
}
sub SendMailFailure {
my ($kernel, $self, $request, $fail) =
@_[KERNEL, OBJECT, ARG0, ARG1];
$request->Respond($kernel, "Failed: ".pp($fail),400);
$self->Verbose( "SendMailFailed: ".pp($fail));
}
sub send {
my ($kernel, $self, $session, $request, ) =
@_[KERNEL, OBJECT, SESSION, ARG0, ];
my $txt = '';
my $param;
my $command = $request->command->[0];
my $cmd = $self->commands->{$command};
return unless ( $param = $cmd->Validate($kernel, $request, $self) );
$self->Verbose("send: to(".$param->{'to'}.") ",2);
$self->Verbose("send: param dump ",,$param);
# Build email message from parts.
my ($email, $body);
if ($command eq 'send')
{
$email = Email::Simple->create(
header => [
From => $param->{'from'},
To => $param->{'to'},
Subject => $param->{'subject'},
],
body => $param->{'body'},
);
$body = $email->as_string;
}
elsif ($command eq 'sendtext')
{
my $file = read_file( $param->{'textfile'}, err_mode => 'quiet' );
unless (defined $file)
{
$request->Respond($kernel, "failed: sendtext file not found", 404);
$self->Verbose("send: sendtext file not found (".$param->{'textfile'}.") ");
return
}
$email = Email::Simple->create(
header => [
From => $param->{'from'},
To => $param->{'to'},
Subject => $param->{'subject'},
],
body => $file,
);
$body = $email->as_string;
}
elsif ($command eq 'sendmsg')
{
my $file = read_file( $param->{'msgfile'}, err_mode => 'quiet' );
unless (defined $file)
{
$request->Respond($kernel, "failed: sendmsg file not found", 404);
$self->Verbose("send: sendmsg file not found (".$param->{'textfile'}.") ");
return
}
$body = $file;
}
# Note that you are prohibited by RFC to send bare LF characters in e-mail
# messages; consult: http://cr.yp.to/docs/smtplf.html
$body =~ s/\n/\r\n/g;
POE::Component::Client::SMTP->send(
# Email related parameters
From => $param->{'from'},
To => $param->{'to'},
Body => $body,
# server params
Port => $param->{'port'},
Server => $param->{'server'},
Timeout => $param->{'timeout'},
# POE related parameters
Context => $request,
Alias => 'pococlsmtpX',
SMTP_Success => 'SendMailSuccess',
SMTP_Failure => 'SendMailFailure',
# Debug => 0,
);
}
=item show
This POE event handler executes the show commands.
=back
=cut
1;
#__END__
=head3 INHERITED METHODS
This module is an Object::InsideOut object that inherits from Agent::TCLI::Package::Base. It
inherits methods from both. Please refer to their documentation for more
details.
=head1 AUTHOR
Eric Hacker E<lt>hacker at cpan.orgE<gt>
=head1 BUGS
SHOULDS and MUSTS are currently not enforced.
Test scripts not thorough enough.
Probably many others.
( run in 1.118 second using v1.01-cache-2.11-cpan-39bf76dae61 )