调用smtplib时的一个小细节
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://meiweier.blog.51cto.com/298258/57167 |
我写的调用smtplib发送的代码是从网上copy过来的,单发邮件时没有问题,但按照copy过来的代码发送多个邮件时,却总是只有第一个收件人能收到。具体情况是:
收件人列表:toAddress = ['m1@qq.com','m2@126.com']
在发送前进行了转换:strTo=','.join(toAddress)
调用发送:smtp.sendmail(strFrom, strTo, msgRoot.as_string())
开始还以为是sina的smtp服务器的限制,连rfc821和telnet都搬出来了(不过没有成功,呵呵),也没有找到解决办法,但是找到了一些有帮助的信息。rfc821中规定,要发送多个邮件,就多次调用rcpt to: <address>。于是仔细查看了发送邮件的debug信息,发现只发送了一个rcpt to命令,其参数就是列表中的第一个邮件地址。
至此开始怀疑copy过来的代码调用方式有问题,但是找不到smtplib的文档,忽然想到了查看一下smtplib的源码,在python的lib目录下找到了smtplib.py这个文件,找到sendmail这个方法。哈哈一切都明白了。
这个方法的注释把调用方式写的名称的清楚,截取一部分大家看吧: Example: >>> import smtplib
>>> s=smtplib.SMTP("localhost") >>> tolist=["two@two.org","three@three.org","four@four.org'>one@one.org","two@two.org","three@three.org","four@four.org"] >>> msg = '''\\ ... From: Me@my.org ... Subject: testin'... ... ... This is a test ''' >>> s.sendmail("me@my.org",tolist,msg) { "three@three.org" : ( 550 ,"User unknown" ) } >>> s.quit() 按照这个方法,这几把toAddress传入,测试,一切ok! 写到这里,希望对要群发送邮件的朋友有帮助。忽然想到,那个代码的作者是不是故意这样写的呢,毕竟群发垃圾邮件是不道德的,瞎猜的,不要当真,呵呵。 本文出自 “江湖” 博客,请务必保留此出处http://meiweier.blog.51cto.com/298258/57167 本文出自 51CTO.COM技术博客 |


tearyrose
博客统计信息
热门文章
最新评论
友情链接
