#!/usr/bin/env perl
use strict;
use warnings;
# Copyright (c) 2005 - 2008 George Nistorica
# All rights reserved.
# This file is part of POE::Component::Client::SMTP
# POE::Component::Client::SMTP is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself. See the LICENSE
# file that comes with this distribution for more details.
# $Id: send_email_auth.pl,v 1.2 2008/05/12 12:30:17 UltraDM Exp $
my $sender = 'george@localhost';
my $recipient = 'george@localhost';
my $smtp_server = 'localhost';
my $user = 'george', my $pass = 'abracadabra', my $smtp_port = 25;
# use the library from the kit
# remove the line below if you're using the system wide installed
# PoCoClSMTP
use lib q{../lib};
use Data::Dumper; # I always include this ;-)
use Email::MIME::Creator;
use IO::All;
use POE;
use POE::Component::Client::SMTP;
# main()
print q{V: }, $POE::Component::Client::SMTP::VERSION, qq{\n};
POE::Session->create(
q{inline_states} => {
q{_start} => \&start_main_session,
q{send_mail} => \&send_mail_from_main_session,
q{send_mail_success} => \&send_mail_success,
q{send_mail_failure} => \&send_mail_failure,
q{_stop} => \&stop_main_session,
}
);
POE::Kernel->run();
# done
sub start_main_session {
#fire the things up
$_[KERNEL]->yield(q{send_mail});
}
# 9qi<|'K3,8fJQpt!#z%S6AA9j8'2
sub send_mail_from_main_session {
my $email = create_message();
# Note that you are prohibited by RFC to send bare LF characters in e-mail
# messages; consult:
# http://cr.yp.to/docs/smtplf.html
$email =~ s/\n/\r\n/g;
POE::Component::Client::SMTP->send(
q{From} => $sender,
q{To} => $recipient,
q{Server} => $smtp_server,
q{Auth} => {
q{mechanism} => q{PLAIN},
q{user} => $user,
q{pass} => $pass,
},
q{Port} => $smtp_port,
q{Body} => $email,
q{SMTP_Success} => q{send_mail_success},
q{SMTP_Failure} => q{send_mail_failure},
q{Debug} => 1,
);
}
sub send_mail_success {
print qq{Success\n};
}
sub send_mail_failure {
my $fail = $_[ARG1];
print Dumper($fail);
print qq{Failure\n};
}
sub stop_main_session {
print qq{End ...\n};
}
# Email Creation Part
# rather lame email creation.
# You may use any method that suits you (I usually create the messages by hand
# ;-) )
sub create_message {
my $attachment_file = q{text_mail_attachment.txt};
my $email;
my @parts;
@parts = (
Email::MIME->create(
q{attributes} => {
q{filename} => q{text.txt},
q{content_type} => q{text/plain},
q{encoding} => q{quoted-printable},
q{name} => q{Example attachment},
},
q{body} => io($attachment_file)->all,
),
Email::MIME->create(
q{attributes} => {
q{content_type} => q{text/plain},
q{disposition} => q{attachment},
q{charset} => q{US-ASCII},
},
q{body} => q{Howdy!},
),
);
$email = Email::MIME->create(
q{header} => [
q{From} => $sender,
q{To} => $recipient,
],
q{parts} => [@parts],
);
# return the message
return $email->as_string;
}