Click here to get back home

Net::SMTP fails

 HomeNewsGroups | Search | About
 comp.lang.perl.misc    Post an article   get this group's latest topics as an RSS feed add this group's latest topics to your My MSN content add this group's latest topics to your My Yahoo content
Subject Author Date
Net::SMTP fails hendedav 05-07-2008
Posted by hendedav on May 7, 2008, 4:16 pm
Please log in for more thread options
> hende...@gmail.com wrote
>
> [ Posted no code, just error logs ... ]
>
> > The only reason there is an error in the script at line 66 is because
> > all the lines were processed even though the auth failed (which the
> > script normally wouldn't come to if the auth section that I commented
> > out, failed).
>
> So what?
>
> Maybe it was line 666 and that's why it failed.
>
> Sinan
>
> --
> (remove .invalid and reverse each component for email address)
>
> comp.lang.perl.misc guidelines on the WWW:http://www.rehabitation.com/clpmisc/

I would probably say that the script, at this point, is not in
neccessarily in question because it works flawlessly on another
computer. I will post it below however for review:



#!/usr/bin/perl -w
use Net::SMTP;

my $smtp_relay="smtp.bizmail.yahoo.com";
my $port=25;
my $url="digital-pipe.com";
my $username="d...\@digital-pipe.com";
my $password="***";

our ($gbl_logsDir, $gbl_emailLog); #used from called script
my $date = scalar(localtime);

sub send_mail {
my($to_email, $to_name, $from_email, $from_name, $subject, @body) =
@_;

my $smtp = Net::SMTP->new($smtp_relay,
Hello => $url,
Port => $port,
Timeout => 30,
Debug=>1);

open(LOG, ">>$gbl_logsDir/$gbl_emailLog") || die "Can't open
$gbl_logsDir/$gbl_emailLog.";
if ($smtp->auth($username,$password))
{ print LOG "Yahoo! email authentication successful.\n"; }
else
{ print LOG "Authentication failed! No email will be sent.
\n"; return(0); }

...snip...

the rest of the script doesn't get reached because the authentication
fails. The calling script just has a call to the send_mail routine
and that is it. I know it doesn't contain errors, because it works
just fine on another computer. Let me know if there is anything else
you need.

Dave

Posted by Ben Morrow on May 7, 2008, 4:41 pm
Please log in for more thread options
[please don't quote .sigs]

Quoth hendedav@gmail.com:
> > hende...@gmail.com wrote
> >
> > [ Posted no code, just error logs ... ]
> >
> > > The only reason there is an error in the script at line 66 is because
> > > all the lines were processed even though the auth failed (which the
> > > script normally wouldn't come to if the auth section that I commented
> > > out, failed).
> >
> > So what?
> >
> > Maybe it was line 666 and that's why it failed.
>
> I would probably say that the script, at this point, is not in
> neccessarily in question because it works flawlessly on another
> computer. I will post it below however for review:
>
> #!/usr/bin/perl -w

'use warnings' is preferable to '-w'. You also need 'use strict'.

> use Net::SMTP;
>
> my $smtp_relay="smtp.bizmail.yahoo.com";
> my $port=25;
> my $url="digital-pipe.com";
> my $username="d...\@digital-pipe.com";
> my $password="***";
>
> our ($gbl_logsDir, $gbl_emailLog); #used from called script
> my $date = scalar(localtime);
>
> sub send_mail {
> my($to_email, $to_name, $from_email, $from_name, $subject, @body) =
> @_;
>
> my $smtp = Net::SMTP->new($smtp_relay,
> Hello => $url,
> Port => $port,
> Timeout => 30,
> Debug=>1);
>
> open(LOG, ">>$gbl_logsDir/$gbl_emailLog") || die "Can't open
> $gbl_logsDir/$gbl_emailLog.";

Use lexical filehandles and 3-arg open, and say *why* the open failed:

open my $LOG, '>>', "$gbl_logsDir/$gbl_emailLog"
or die "Can't append to $gbl_logsDir/$gbl_emailLog: $!.";

I much prefer using 'or' and no parens over using '||' and parens on the
'open', but that is a matter of taste.

If you need $LOG to be global (if it's used from other subs), you will
need to declare it at the top with your other globals. It would be
better to have a separate open_log sub which returns a filehandle, and
then pass that filehandle into all the subs which need it.

> if ($smtp->auth($username,$password))
> { print LOG "Yahoo! email authentication successful.\n"; }
> else
> { print LOG "Authentication failed! No email will be sent.
> \n"; return(0); }

You need to log *why* it failed:

else {
printf LOG
"Authentication failed! No email will be sent: %d %s\n",
$smtp->code, $smtp->message;
return(0);
}

I suspect you'll find the result is "500 Need MIME::Base64 and
Authen::SASL todo auth", meaning you haven't got one of those modules
installed.

Ben

--
I must not fear. Fear is the mind-killer. I will face my fear and
I will let it pass through me. When the fear is gone there will be
nothing. Only I will remain.
ben@morrow.me.uk Frank Herbert, 'Dune'

Posted by smallpond on May 7, 2008, 4:10 pm
Please log in for more thread options
hendedav@gmail.com wrote:
> On May 7, 3:31 pm, hende...@gmail.com wrote:
>
>>
>>
>>
>>
>>>hende...@gmail.com wrote:
>>>
>>>>Gang,
>>
>>>> I am trying to use Net::SMTP to send email from a computer and it
>>>>fails to send (debug info below). I can take this same script and put
>>>>it on another computer and it works just fine. That would tell me
>>>>some piece of software isn't installed on the non-working computer,
>>>>but I have no idea as to what it may be. I have made sure the files
>>>>are the same on both computers that are listed in the "use" statements
>>>>at the top of the Net::SMTP module. I am using Debian 3.1 on the one
>>>>that works and 4.0 on the one that doesn't work. Any help would
>>>>greatly be appreciated.
>>
>>>>Thanks,
>>
>>>>Dave
>>
>>>>Net::SMTP>>> Net::SMTP(2.29)
>>>>Net::SMTP>>> Net::Cmd(2.26)
>>>>Net::SMTP>>> Exporter(5.58)
>>>>Net::SMTP>>> IO::Socket::INET(1.29)
>>>>Net::SMTP>>> IO::Socket(1.29)
>>>>Net::SMTP>>> IO::Handle(1.25)
>>>>Net::SMTP=GLOB(0x82cd2dc)<<< 220 smtp106.biz.mail.re2.yahoo.com ESMTP
>>>>Net::SMTP=GLOB(0x82cd2dc)>>> EHLO digital-pipe.com
>>>>Net::SMTP=GLOB(0x82cd2dc)<<< 250-smtp106.biz.mail.re2.yahoo.com
>>>>Net::SMTP=GLOB(0x82cd2dc)<<< 250-AUTH LOGIN PLAIN XYMCOOKIE
>>>>Net::SMTP=GLOB(0x82cd2dc)<<< 250-PIPELINING
>>>>Net::SMTP=GLOB(0x82cd2dc)<<< 250 8BITMIME
>>
>>>220 says that yahoo will accept mail using ESMTP, so you sent EHLO.
>>>250 says OK, here's what I accept.
>>>There's no error shown here, the next thing that you should do is
>>>send MAIL FROM:, which you didn't.
>>>--S
>>
>>Thanks for the reply. Why would this script work just fine on one
>>computer and then stop at the above point on the other?
>>
>>Dave

Although my telepathic abilities are limited, I am going to guess
that it is one of:
1 - you are not connecting to the same SMTP server
2 - you have a different version of NET::SMTP
3 - the other computer is configured differently
4 - you are behind a firewall
5 - you are on a different ISP
6 - Comcast is randomly modifying your packets
or
7 - there is a cat inside the computer upgrading your RAM



> I removed the authentication checking and just had the rest of the
> script processed and here is the response I received:
>
> Net::SMTP>>> Net::SMTP(2.29)
> Net::SMTP>>> Net::Cmd(2.26)
> Net::SMTP>>> Exporter(5.58)
> Net::SMTP>>> IO::Socket::INET(1.29)
> Net::SMTP>>> IO::Socket(1.29)
> Net::SMTP>>> IO::Handle(1.25)
> Net::SMTP=GLOB(0x82ccfac)<<< 220 smtp107.biz.mail.re2.yahoo.com ESMTP
> Net::SMTP=GLOB(0x82ccfac)>>> EHLO digital-pipe.com
> Net::SMTP=GLOB(0x82ccfac)<<< 250-smtp107.biz.mail.re2.yahoo.com
> Net::SMTP=GLOB(0x82ccfac)<<< 250-AUTH LOGIN PLAIN XYMCOOKIE
> Net::SMTP=GLOB(0x82ccfac)<<< 250-PIPELINING
> Net::SMTP=GLOB(0x82ccfac)<<< 250 8BITMIME
> Net::SMTP=GLOB(0x82ccfac)<<< 530 authentication required - for help go
> to http://help.yahoo.com/help/us/bizmail/pop/pop-11.html
> Net::SMTP: Unexpected EOF on command channel at /usr/lib/perl/5.8/
> libemail.pm line 66
>
>
> The only reason there is an error in the script at line 66 is because
> all the lines were processed even though the auth failed (which the
> script normally wouldn't come to if the auth section that I commented
> out, failed).
>
> Dave

This line:
250-AUTH LOGIN PLAIN XYMCOOKIE
says that you must authenticate with one of the types: LOGIN, PLAIN or XYMCOOKIE.

--S
** Posted from http://www.teranews.com **

Posted by hendedav on May 7, 2008, 4:20 pm
Please log in for more thread options
> hende...@gmail.com wrote:
> > On May 7, 3:31 pm, hende...@gmail.com wrote:
>
>
> >>>hende...@gmail.com wrote:
>
> >>>>Gang,
>
> >>>> I am trying to use Net::SMTP to send email from a computer and it
> >>>>fails to send (debug info below). I can take this same script and put
> >>>>it on another computer and it works just fine. That would tell me
> >>>>some piece of software isn't installed on the non-working computer,
> >>>>but I have no idea as to what it may be. I have made sure the files
> >>>>are the same on both computers that are listed in the "use" statements
> >>>>at the top of the Net::SMTP module. I am using Debian 3.1 on the one
> >>>>that works and 4.0 on the one that doesn't work. Any help would
> >>>>greatly be appreciated.
>
> >>>>Thanks,
>
> >>>>Dave
>
> >>>>Net::SMTP>>> Net::SMTP(2.29)
> >>>>Net::SMTP>>> Net::Cmd(2.26)
> >>>>Net::SMTP>>> Exporter(5.58)
> >>>>Net::SMTP>>> IO::Socket::INET(1.29)
> >>>>Net::SMTP>>> IO::Socket(1.29)
> >>>>Net::SMTP>>> IO::Handle(1.25)
> >>>>Net::SMTP=GLOB(0x82cd2dc)<<< 220 smtp106.biz.mail.re2.yahoo.com ESMTP
> >>>>Net::SMTP=GLOB(0x82cd2dc)>>> EHLO digital-pipe.com
> >>>>Net::SMTP=GLOB(0x82cd2dc)<<< 250-smtp106.biz.mail.re2.yahoo.com
> >>>>Net::SMTP=GLOB(0x82cd2dc)<<< 250-AUTH LOGIN PLAIN XYMCOOKIE
> >>>>Net::SMTP=GLOB(0x82cd2dc)<<< 250-PIPELINING
> >>>>Net::SMTP=GLOB(0x82cd2dc)<<< 250 8BITMIME
>
> >>>220 says that yahoo will accept mail using ESMTP, so you sent EHLO.
> >>>250 says OK, here's what I accept.
> >>>There's no error shown here, the next thing that you should do is
> >>>send MAIL FROM:, which you didn't.
> >>>--S
>
> >>Thanks for the reply. Why would this script work just fine on one
> >>computer and then stop at the above point on the other?
>
> >>Dave
>
> Although my telepathic abilities are limited, I am going to guess
> that it is one of:
> 1 - you are not connecting to the same SMTP server
> 2 - you have a different version of NET::SMTP
> 3 - the other computer is configured differently
> 4 - you are behind a firewall
> 5 - you are on a different ISP
> 6 - Comcast is randomly modifying your packets
> or
> 7 - there is a cat inside the computer upgrading your RAM
>
>
>
> > I removed the authentication checking and just had the rest of the
> > script processed and here is the response I received:
>
> > Net::SMTP>>> Net::SMTP(2.29)
> > Net::SMTP>>> Net::Cmd(2.26)
> > Net::SMTP>>> Exporter(5.58)
> > Net::SMTP>>> IO::Socket::INET(1.29)
> > Net::SMTP>>> IO::Socket(1.29)
> > Net::SMTP>>> IO::Handle(1.25)
> > Net::SMTP=GLOB(0x82ccfac)<<< 220 smtp107.biz.mail.re2.yahoo.com ESMTP
> > Net::SMTP=GLOB(0x82ccfac)>>> EHLO digital-pipe.com
> > Net::SMTP=GLOB(0x82ccfac)<<< 250-smtp107.biz.mail.re2.yahoo.com
> > Net::SMTP=GLOB(0x82ccfac)<<< 250-AUTH LOGIN PLAIN XYMCOOKIE
> > Net::SMTP=GLOB(0x82ccfac)<<< 250-PIPELINING
> > Net::SMTP=GLOB(0x82ccfac)<<< 250 8BITMIME
> > Net::SMTP=GLOB(0x82ccfac)<<< 530 authentication required - for help go
> > tohttp://help.yahoo.com/help/us/bizmail/pop/pop-11.html
> > Net::SMTP: Unexpected EOF on command channel at /usr/lib/perl/5.8/
> > libemail.pm line 66
>
> > The only reason there is an error in the script at line 66 is because
> > all the lines were processed even though the auth failed (which the
> > script normally wouldn't come to if the auth section that I commented
> > out, failed).
>
> > Dave
>
> This line:
> 250-AUTH LOGIN PLAIN XYMCOOKIE
> says that you must authenticate with one of the types: LOGIN, PLAIN or
XYMCOOKIE.
>
> --S
> ** Posted fromhttp://www.teranews.com**

I just worked around it by using another SMTP server. Oh well.
Thanks for the help guys.

Dave

Posted by Peter J. Holzer on May 9, 2008, 2:12 am
Please log in for more thread options
> This line:
> 250-AUTH LOGIN PLAIN XYMCOOKIE
> says that you must authenticate with one of the types: LOGIN, PLAIN or
XYMCOOKIE.

No, it says that you *can* authenticate using one of these methods.

        hp

Similar ThreadsPosted
Constant.t fails 240 of 272 tests and recurs.t fails 1 of 25 tests on HPUX using perl 5.8.7 December 8, 2005, 9:16 am
Net::SMTP September 20, 2004, 5:55 pm
Net::SMTP April 3, 2006, 12:01 pm
Net::SMTP woes August 11, 2004, 8:19 pm
Net::SMTP woes August 11, 2004, 8:19 pm
Net::SMTP and attachments August 23, 2004, 9:58 am
Net::Telnet and SMTP June 14, 2005, 12:18 pm
Check smtp April 28, 2006, 5:23 am
use Net::SMTP::Multipart; May 20, 2006, 9:20 pm
Re: Net::SMTP problem September 1, 2006, 7:37 pm

Our other projects:

Art Dolls, Fairies and Mermaids - Sunnyfaces.net

Roy's Linux, Programming and Search Engines messages

1-Script XML SitemapXML Sitemap