Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

Python Programming Language

SMTPAuthenticationError


Hi,

I am trying to send a mail using smtplib. My server requires me to
authenticate, for this I'm using SMTP.login function. However it
fails-

>>> server = smtplib.SMTP(host='mail.domain', port=25)
>>> server.login('username', 'password')

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.4/smtplib.py", line 587, in login
    raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, 'authorization failed
(#5.7.0)')

I am sure that I am giving the correct credentials. The same works in
Thunderbird. Am I missing something here or am I supposed to use some
other library for this?

Thanks in advance,
Ram

Are you sure that your SMTP server uses this type of authentication?
Some SMTP servers use POP3 followed by SMTP to authenticate instead.

use telnet to verify, this link might help.

http://www.computerperformance.co.uk/exchange2003/exchange2003_SMTP_A...

-Larry

Hi Larry,

Thanks for the reply. I have worked according to the steps in the link
you provided. From that it seems my server accepts base64 encoded
username and password. I am able to login this way. How to give the
same in smtplib?

Ram

--- Ramashish Baranwal <ramashish.li@gmail.com>
wrote:

> > Are you sure that your SMTP server uses this type
> of authentication?
> > Some SMTP servers use POP3 followed by SMTP to
> authenticate instead.

> > use telnet to verify, this link might help.

http://www.computerperformance.co.uk/exchange2003/exchange2003_SMTP_A...

> Hi Larry,

> Thanks for the reply. I have worked according to the
> steps in the link
> you provided. From that it seems my server accepts
> base64 encoded
> username and password. I am able to login this way.
> How to give the
> same in smtplib?

> Ram

To help debug this, you may want to try the following.

1) Copy smptlib.py into your local directory.  On my
box, you can find it here, or import sys; print
sys.path to help find it on your box:

   /usr/local/lib/python2.3

2) Go the login() method, add some print statements
there to see what's going on.

I admit to not being an SMTP expert nor fully
understanding the code at first glance, but here is
some code iin smtplib.py that suggests you're close to
getting this working, to the extent that your server
wants base64 encoding:

        def encode_cram_md5(challenge, user,
password):
            challenge = base64.decodestring(challenge)
            response = user + " " +
hmac.HMAC(password, challenge).hexdigest()
            return encode_base64(response, eol="")

Hope this helps.

___________________________________________________________________________ _________You snooze, you lose. Get messages ASAP with AutoCheck
in the all-new Yahoo! Mail Beta.
http://advision.webevents.yahoo.com/mailbeta/newmail_html.html

Thanks Steve, that helped a lot. smtplib was trying to a CRAM-MD5 auth
which wasn't working. I don't know why. But when I made it do a LOGIN
auth by changing its preferred_auth list, it worked. Login has its own
preferred list of auth methods which is nice except that not all
servers which advertise a particular method may be capable of handling
that.

It would have been good if there was optionally a way to specify in
login() what method to use. For now, I am simply going to derive SMTP
to form a class that does LOGIN auth.

Ram

Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc