#!/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; }