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 )