Python用QQ邮箱发送邮件时授权码问题

本文转载自: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。才知道是那个授权码的原因。于是赶紧获取邮箱的授权码。

最后测试终于好了,代码如下:

  1. #coding:utf-8  
  2. import smtplib  
  3. from email.mime.text import MIMEText  
  4. from email.header import Header  
  5.   
  6. # 第三方 SMTP 服务  
  7. mail_host="smtp.qq.com"  #设置服务器  
  8. mail_user="******@qq.com"    #用户名  
  9. mail_pass="*********"   #口令,QQ邮箱是输入授权码,在qq邮箱设置 里用验证过的手机发送短信获得,不含空格  
  10.   
  11.   
  12. sender = '******qq.com'  
  13. receivers = ['******@qq.com','****@sina.com.cn']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱  
  14.   
  15. message = MIMEText('a test for python', 'plain', 'utf-8')  
  16. message['From'] = Header("ppyy", 'utf-8')  
  17. message['To'] =  Header("you", 'utf-8')  
  18.   
  19. subject = 'my test'  
  20. message['Subject'] = Header(subject, 'utf-8')  
  21.   
  22. try:  
  23.   smtpObj = smtplib.SMTP_SSL(mail_host, 465)   
  24.   smtpObj.login(mail_user,mail_pass)    
  25.   smtpObj.sendmail(sender, receivers, message.as_string())  
  26.   smtpObj.quit()  
  27.   print u"邮件发送成功"  
  28. except smtplib.SMTPException,e:  
  29.   print e


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值