develooper Front page | perl.pep | Postings from July 2011

Re: send email with perl 587 and startssl

Thread Previous | Thread Next
From:
Jesse Thompson
Date:
July 25, 2011 07:06
Subject:
Re: send email with perl 587 and startssl
Message ID:
4E2D784B.70602@doit.wisc.edu
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, ml@smtp.fakessh.eu 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='titi@titi.eu';
>    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, ml@smtp.fakessh.eu 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 =>   'titi@titi.eu',
>>>                                To   =>   'toto@toto.fr',
>>>                                      ],
>>>                             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='titi@titi.eu';
>>>     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: $_";
>>>     };
>


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About