At home I have Net::SMTP::TLS and Net::SMTP::SSL installed and I’ve managed to use both to send mail via my Google account.
On one of my hosting services, I have only Net::SMTP::SSL, and it just won’t work.
Debug output at home:
Net::SMTP::SSL>>> Net::SMTP::SSL(1.01) Net::SMTP::SSL>>> IO::Socket::SSL(1.24) Net::SMTP::SSL>>> IO::Socket::INET(1.31) Net::SMTP::SSL>>> IO::Socket(1.31) Net::SMTP::SSL>>> IO::Handle(1.28) Net::SMTP::SSL>>> Exporter(5.58) Net::SMTP::SSL>>> Net::Cmd(2.29) Net::SMTP::SSL=GLOB(0x186fc04)<<< 220 mx.google.com ESMTP 24sm915314eyx.9 Net::SMTP::SSL=GLOB(0x186fc04)>>> EHLO localhost.localdomain Net::SMTP::SSL=GLOB(0x186fc04)<<< 250-mx.google.com at your service, [80.219.173.68] Net::SMTP::SSL=GLOB(0x186fc04)<<< 250-SIZE 35651584 Net::SMTP::SSL=GLOB(0x186fc04)<<< 250-8BITMIME Net::SMTP::SSL=GLOB(0x186fc04)<<< 250-AUTH LOGIN PLAIN Net::SMTP::SSL=GLOB(0x186fc04)<<< 250-ENHANCEDSTATUSCODES Net::SMTP::SSL=GLOB(0x186fc04)<<< 250 PIPELINING Net::SMTP::SSL=GLOB(0x186fc04)>>> AUTH LOGIN Net::SMTP::SSL=GLOB(0x186fc04)<<< 334 VXNlcm5hbWU6 Net::SMTP::SSL=GLOB(0x186fc04)>>> a2Vuc2FuYXRh Net::SMTP::SSL=GLOB(0x186fc04)<<< 334 UGFzc3dvcmQ6 Net::SMTP::SSL=GLOB(0x186fc04)>>> VGgsYmFpZA== Net::SMTP::SSL=GLOB(0x186fc04)<<< 235 2.7.0 Accepted Net::SMTP::SSL=GLOB(0x186fc04)>>> MAIL FROM:<kensanata@gmail.com>
Notice the *AUTH LOGIN* command.
Debug output on my host:
Net::SMTP::SSL>>> Net::SMTP::SSL(1.01) Net::SMTP::SSL>>> IO::Socket::SSL(1.16) Net::SMTP::SSL>>> IO::Socket::INET(1.31) Net::SMTP::SSL>>> IO::Socket(1.30_01) Net::SMTP::SSL>>> IO::Handle(1.27) Net::SMTP::SSL>>> Exporter(5.62) Net::SMTP::SSL>>> Net::Cmd(2.29) Net::SMTP::SSL=GLOB(0xa025520)<<< 220 mx.google.com ESMTP 10sm135225eyz.42 Net::SMTP::SSL=GLOB(0xa025520)>>> EHLO localhost.localdomain Net::SMTP::SSL=GLOB(0xa025520)<<< 250-mx.google.com at your service, [83.137.100.36] Net::SMTP::SSL=GLOB(0xa025520)<<< 250-SIZE 35651584 Net::SMTP::SSL=GLOB(0xa025520)<<< 250-8BITMIME Net::SMTP::SSL=GLOB(0xa025520)<<< 250-AUTH LOGIN PLAIN Net::SMTP::SSL=GLOB(0xa025520)<<< 250-ENHANCEDSTATUSCODES Net::SMTP::SSL=GLOB(0xa025520)<<< 250 PIPELINING Net::SMTP::SSL=GLOB(0xa025520)>>> MAIL FROM:<kensanata@gmail.com> Net::SMTP::SSL=GLOB(0xa025520)<<< 530-5.5.1 Authentication Required. Learn more at Net::SMTP::SSL=GLOB(0xa025520)<<< 530 5.5.1 http://mail.google.com/support/bin/answer.py?answer=14257 10sm135225eyz.42
Notice the error: *Authentication Required*.
Why is the same script (I checked twice – I sure hope I’m not confusing anything) not using the AUTH LOGIN command?
I don’t understand.
my $mail = new MIME::Entity->build(To => $from, # test! From => $from, Subject => 'Test Net::SMTP::SSL', Path => $fh, Type => "text/html"); my $smtp = Net::SMTP::SSL->new($host, Port => 465, Debug => 1); $smtp->auth($user, $password); $smtp->mail($from); $smtp->to($from); # test! $smtp->data; $smtp->datasend($mail->stringify); $smtp->dataend; $smtp->quit;
Source is available. ¹
Output of ##perl -MNet::SMTP::SSL -wle ’for (keys %INC) next’## as suggested on #perl:
+------------------+---------------+ | At home | Remote system | +------------------+---------------+ | Net::SSLeay 1.35 | | +------------------+---------------+
IO::Handle 1.28 List::Util 1.14 SelectSaver 1.00 IO::Socket 1.31 warnings 1.03 Symbol 1.05 Scalar::Util 1.14 IO::Socket::INET 1.31 Exporter 5.58 Errno 1.09 IO::Socket::SSL 1.24 warnings::register 1.00 XSLoader 0.02 Net::Config 1.11 Net::Cmd 2.29 utf8 1.04 Config <unknown> IO 1.25 IO::Socket::UNIX 1.23 Carp 1.03 bytes 1.01 Exporter::Heavy 5.58 Net::SMTP 2.31 vars 1.01 strict 1.03 Net::SMTP::SSL 1.01 constant 1.04 Socket 1.77 AutoLoader 5.60 DynaLoader 1.05|Net::SSLeay 1.35 XSLoader 0.08 IO::Handle 1.27 warnings::register 1.01 Net::Config 1.11 List::Util 1.19 SelectSaver 1.01 Net::Cmd 2.29 IO::Socket 1.30_01 warnings 1.06 utf8 1.07 IO::Socket::UNIX 1.23 IO 1.23_01 Symbol 1.06 bytes 1.03 Carp 1.08 Net::SMTP 2.31 Scalar::Util 1.19 Exporter::Heavy 5.62 IO::Socket::INET 1.31 Net::SMTP::SSL 1.01 strict 1.04 vars 1.01 Exporter 5.62 constant 1.13 Socket 1.80 Errno 1.1 IO::Socket::SSL 1.16 AutoLoader 5.63|
Hm...
sub auth { my ($self, $username, $password) = @_; eval { require MIME::Base64; require Authen::SASL; } or $self->set_status(500, ["Need MIME::Base64 and Authen::SASL todo auth"]), return 0;
There is therefore a dependency on *Authen::SASL*. If you don’t have that module, sending your email will fail in a non-obvious way, as seen above. Installing libauthen-sasl-perl fixes the problem.*
#Perl #SMTP
(Please contact me if you want to remove your comment.)
⁂
Thanks for the heads up on the Authen::SASL dependency...been working on it for hours and getting nowhere.
– Fred 2009-12-09 18:34 UTC
---
I’m not sure what to make of the response given to the bug report. Does Gregor agree with me or not? It’s weird. 😄
the response given to the bug report
– Alex Schroeder 2009-12-09 23:24 UTC