Re: send email with perl 587 and startssl
[email protected] (Jesse Thompson) Mon, 25 Jul 2011 09:06:03 -0500
| Newsgroups | perl.pep |
|---|---|
| Message-ID | <[email protected]> |
It looks like Email::Sender::Transport::SMTP uses Net::SMTP::SSL, which only supports SSL (establishes a secure channel before any SMTP occurs, port 465) and not STARTTLS (the SMTP connection is established and then is "upgraded" to TLS, port 587 and sometimes 25) Net::SMTP::TLS is probably what you are looking for. I have used it in my code, and I know that it works. There may be other modules that support STARTTLS as well. I don't know if there is an easy way to get Net::SMTP::TLS to work with Email::Sender::Transport::SMTP. Perhaps you could use Net::SMTP::TLS directly with Email::Sender::Simple? Jesse On 7/22/11 9:49 PM, [email protected] wrote: > Le samedi 23 juillet 2011 03:59, Fayland Lam a écrit : >> Hi, if you check the doc carefully, you'll find there is ssl option >> which may help. >> >> http://search.cpan.org/~rjbs/Email-Sender-0.110001/lib/Email/Sender/Transpo >> rt/SMTP.pm >> <http://search.cpan.org/%7Erjbs/Email-Sender-0.110001/lib/Email/Sender/Tran >> sport/SMTP.pm> >> >> Thanks >> > > i check the doc carefully > and I realized that I did not look at these options > > i re writte my script with this option > > my $SMTP_ENVELOPE_FROM_ADDRESS='[email protected]'; > my $SMTP_HOSTNAME='smtp.titi.eu'; > my $SMTP_PORT=587; > my $SMTP_SSL=1; > my $SMTP_SASL_USERNAME='titi'; > my $SMTP_SASL_PASSWORD='titi'; > try { > sendmail( > $message, > { > from => $SMTP_ENVELOPE_FROM_ADDRESS, > transport => Email::Sender::Transport::SMTP->new({ > host => $SMTP_HOSTNAME, > port => $SMTP_PORT, > ssl => $SMTP_SSL, > sasl_username => $SMTP_SASL_USERNAME, > sasl_password => $SMTP_SASL_PASSWORD, > }) > } > ); > } catch { > warn "sending failed: $_"; > }; > > the result is now a complete failure > > > ~]$ perl emailsender1.pl > sending failed: unable to establish SMTP connection at emailsender1.pl line > 43. > > ~]# tail -f /var/log/maillog > 2011-07-23 04:48:53imap(fakessh): Info: Disconnected: Logged out > bytes=2070/5878 > Jul 23 04:49:47 r13151 postfix/smtpd[2445]: connect from > r13151.ovh.net[87.98.186.232] > Jul 23 04:49:47 r13151 postfix/smtpd[2445]: too many errors after UNKNOWN from > r13151.ovh.net[87.98.186.232] > Jul 23 04:49:47 r13151 postfix/smtpd[2445]: disconnect from > r13151.ovh.net[87.98.186.232] > >> On 2011/7/23 9:51, [email protected] wrote: >>> hello folks >>> >>> when is it the easiest solution to email 587 startssl and authentication >>> >>> I arrived by writing this but the email sent does not contain the headers >>> of the authentication >>> >>> ]$ cat emailsender1.pl >>> #!/usr/bin/perl >>> >>> use Email::MIME; >>> >>> my $message = Email::MIME->create( >>> header => [ >>> From => '[email protected]', >>> To => '[email protected]', >>> ], >>> parts => [ >>> q[ This is part one], >>> q[ This is part two], >>> q[ These could be binary too], >>> ], >>> ); >>> # produce an Email::Abstract compatible message object, >>> # e.g. produced by Email::Simple, Email::MIME, Email::Stuff >>> >>> use Email::Sender::Simple qw(sendmail); >>> use Email::Sender::Transport::SMTP qw(); >>> use Try::Tiny; >>> my $SMTP_ENVELOPE_FROM_ADDRESS='[email protected]'; >>> my $SMTP_HOSTNAME='smtp.titi.eu'; >>> my $SMTP_PORT=587; >>> try { >>> sendmail( >>> $message, >>> { >>> from => $SMTP_ENVELOPE_FROM_ADDRESS, >>> transport => Email::Sender::Transport::SMTP->new({ >>> host => $SMTP_HOSTNAME, >>> port => $SMTP_PORT, >>> }) >>> } >>> ); >>> } catch { >>> warn "sending failed: $_"; >>> }; >
smime.p7s
(application/pkcs7-signature, 7.3 KB) - not displayed