用smtplib登陆qq邮箱发邮件

网上关于Python发送邮件的文章很多,但是多数的撰写时间应该是早于Python 2.7.3的,所以都不能直接改帐号和密码直接登陆主流邮箱的smtp邮件服务器发送邮件。坑趟了不少,许多的版本甚至没有login登录的调用,有些使用了fakesocketXXX的貌似废弃类型,2.7.3已经不支持了,总之就是没有一篇博文可以不抛异常的把邮件顺利的发出去。
html

异常信息过程当中搜了很多,503的返回码,10060的错误代码,不一而足,最显著的提示信息是提示须要need secure connection,提到了例如ssl。还好博主以前有过了解ssl和tls这类概念,数据交互虽然没有搞过,可是Python必定是贴心的封装无缺的,对咱们开发者应该就是一句调用的问题,具体的过程原理交给网络安全专家们处理吧。python

总之周六试图看文档,惋惜F着Q也打不开文档页,只能放放问题了,周天的话,好在文档顺利打开(http://docs.python.org/2/library/smtplib.html#smtplib.SMTP.sendmail)。直接搜ssl,看到了SMTP_SSL这个类型,而后,一切搞定,不费吹灰之力,很有杀鸡用牛刀的感受。安全

#-*- encoding: gb2312 -*-
import os, sys
import smtplib
from smtplib import SMTP_SSL
from email.header import Header
from email.mime.text import MIMEText

mailInfo = {
"from":"发信人用户名@qq.com",
"to":"收信人用户名@qq.com",
"hostname":"smtp.qq.com",
"username":"帐户名",
"password":"密码",
"mailsubject":"邮件标题",
"mailtext":"邮件正文",
"mailencoding":"utf-8"
        }
        
if __name__ == '__main__':
	smtp = SMTP_SSL(mailInfo["hostname"])
	smtp.set_debuglevel(1)
	smtp.ehlo(mailInfo["hostname"])
	smtp.login(mailInfo["username"],mailInfo["password"])
	
	msg = MIMEText(mailInfo["mailtext"],"text",mailInfo["mailencoding"])
	msg["Subject"] = Header(mailInfo["mailsubject"],mailInfo["mailencoding"])
	msg["from"] = mailInfo["from"]
	msg["to"] = mailInfo["to"]
	smtp.sendmail(mailInfo["from"], mailInfo["to"], msg.as_string())
	
	smtp.quit()

邮件却是顺利收到了,邮件正文貌似不正常,有兴趣的哥们给看看吧。
服务器

相关文章
相关标签/搜索