本文转载自:http://blog.csdn.net/wateryouyo/article/details/51766345
QQ邮箱最新推出了一个授权码,需已验证的手机号向QQ邮箱服务器发送一条短信获得。该授权码用于第三方客户端登录,代替了第三方登录时使用的个人邮箱密码。
在测试过程中遇到两个问题:
1.提示需建立SSL安全连接。于是将smtplib.SMTP() 改成了smtplib.SMTP_SSL()
2.运行代码后,程序一直运行,但没有任何反应,等了五分钟左右,最后只好ctrl+c停止。查原因才知道,QQ邮箱的SMTP服务端口不是默认的25.改为465之后就好了。
(使用标准的25端口连接SMTP服务器时,使用的是明文传输,发送邮件的整个过程可能会被窃听。要更安全地发送邮件,可以加密SMTP会话,实际上就是先创建SSL安全连接,然后再使用SMTP协议发送邮件。)
3.运行提示535错误,说授权error。才知道是那个授权码的原因。于是赶紧获取邮箱的授权码。
最后测试终于好了,代码如下:
- import smtplib
- from email.mime.text import MIMEText
- from email.header import Header
-
- mail_host="smtp.qq.com"
- mail_user="******@qq.com"
- mail_pass="*********"
-
-
- sender = '******qq.com'
- receivers = ['******@qq.com','****@sina.com.cn']
-
- message = MIMEText('a test for python', 'plain', 'utf-8')
- message['From'] = Header("ppyy", 'utf-8')
- message['To'] = Header("you", 'utf-8')
-
- subject = 'my test'
- message['Subject'] = Header(subject, 'utf-8')
-
- try:
- smtpObj = smtplib.SMTP_SSL(mail_host, 465)
- smtpObj.login(mail_user,mail_pass)
- smtpObj.sendmail(sender, receivers, message.as_string())
- smtpObj.quit()
- print u"邮件发送成功"
- except smtplib.SMTPException,e:
- print e