[阅读: 1196] 2006-04-20 02:12:13
163和新浪的服务器需要helo或者ehlo指令,记得新浪的是要求必须放到
第一个指令来执行。而且他们对一些认证方式不支持,所以python的
smtplib自己判断并使用的auth方式不对,导致没法登录。我以前的解决
方法是使用LOGIN指令登录,比如这样:
def send(smtpserver, fromaddr, toaddr, user, pwd, msg):
server = smtplib.SMTP(smtpserver)
server.set_debuglevel(1)
server.ehlo('xyb')
#server.login(user, pwd)
server.docmd("AUTH",
"%s %s" % ("LOGIN", encode_base64(user, eol="")))
server.docmd(encode_base64(pwd, eol=""))
server.sendmail(fromaddr, toaddr, msg)
server.quit()
python smtplib提供的操作接口是基于公共标准的操作接口。(由help(smtplib)得到)
而网易的smtp服务器作为商业的应用,在某些地方(如认证部分)做了相应的调整,这些调整导致smtplib的接口无法适应。
可执行
telnet smtp.163.com 25
EHLO ....
得到163的smtp相关信息...