in reply to Re: Send email via Gmail
in thread Send email via Gmail

Hi,

Thanks for the reply. Ah man, I didn't realise I was running on such an old Net:::SMTP. I've upgraded it now. Almost have it working:

use Net::SMTP; my $smtp = Net::SMTP->new('smtp.gmail.com', Hello => 'smtp.gmail.com', Timeout => 30, Debug => 1, SSL => 1, ); $smtp->auth($CFG->{db_smtp_user}, $CFG->{db_smtp_pass}); $smtp->data(); $smtp->datasend($email); $smtp->dataend();
With the debug on, I get this error (and no email sent);

Net::SMTP::_SSL=GLOB(0x3b08578)<<< 502 5.5.1 Unrecognized command. y39sm8325289wmh.21 - gsmtp

Not quite sure what that's telling me though?

Thanks!

Andy

Replies are listed 'Best First'.
Re^3: Send email via Gmail
by hippo (Archbishop) on Oct 08, 2016 at 14:04 UTC

    In this snippet you have provided there are 5 method calls and not one test of the return value of any of them. Why not test those return values to see where things are going awry? eg.

    $smtp->auth($CFG->{db_smtp_user}, $CFG->{db_smtp_pass}) or die "Bad au +th for user $CFG->{db_smtp_user}";
      Hi,

      Funnily enough, I was just playing with that :)
      use Net::SMTP; my $smtp = Net::SMTP->new('smtp.gmail.com', Hello => 'smtp.gmail.com', Timeout => 30, Debug => 1, SSL => 1 ) || die "Error: $!"; $smtp->auth($CFG->{db_smtp_user}, $CFG->{db_smtp_pass}) or die "C +ould not authenticate with mail.\n"; $smtp->data(); $smtp->datasend($email) || die $!; $smtp->dataend() || die $smtp->message();


      It complains on line 99, which is:

      $smtp->dataend() || die $!;

      Which gives the following error message:

      5.5.1 Unrecognized command. vs7sm25292357wjb.10 - gsmtp


      I found a similar post here: http://www.perlmonks.org/?node_id=680369, but I'm not quite sure what the suggestion is (it also 2008, so I'm not sure if its relative any more)

      Just to clarify a bit more, this is the debug that reports the error:

      Net::SMTP::_SSL>>> Net::SMTP::_SSL Net::SMTP::_SSL>>> IO::Socket::SSL(2.019) Net::SMTP::_SSL>>> IO::Socket::IP(0.32) Net::SMTP::_SSL>>> IO::Socket(1.38) Net::SMTP::_SSL>>> IO::Handle(1.35) Net::SMTP::_SSL>>> Exporter(5.71) Net::SMTP::_SSL>>> Net::SMTP(3.10) Net::SMTP::_SSL>>> Net::Cmd(3.10) ******* Net::SMTP::_SSL=GLOB(0x1f5e100)<<< 220 smtp.gmail.com ESMTP y2sm147858 +26wjx.20 - gsmtp ******* Net::SMTP::_SSL=GLOB(0x1f5e100)>>> EHLO localhost.localdomain Net::SMTP::_SSL=GLOB(0x1f5e100)<<< 250-smtp.gmail.com at your service, + [2a01:7e00::f03c:91ff:fea8:e2c5]


      Cheers

      Andy

        Gmail doesn't recognise the command you have sent, which is reasonable because you have not explicitly sent any command. See how the example for sending an email in the Net::SMTP documentation differs from what you are doing? You have not issued a command like the example does with the mail method.