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

yipeiwu_com6年前Python基础

QQ邮箱最新推出了一个授权码,需已验证的手机号向QQ邮箱服务器发送一条短信获得。该授权码用于第三方客户端登录,代替了第三方登录时使用的个人邮箱密码。

在测试过程中遇到两个问题:

1.提示需建立SSL安全连接。于是将smtplib.SMTP() 改成了smtplib.SMTP_SSL()

2.运行代码后,程序一直运行,但没有任何反应,等了五分钟左右,最后只好ctrl+c停止。查原因才知道,QQ邮箱的SMTP服务端口不是默认的25.改为465之后就好了。

(使用标准的25端口连接SMTP服务器时,使用的是明文传输,发送邮件的整个过程可能会被窃听。要更安全地发送邮件,可以加密SMTP会话,实际上就是先创建SSL安全连接,然后再使用SMTP协议发送邮件。)

3.运行提示535错误,说授权error。才知道是那个授权码的原因。于是赶紧获取邮箱的授权码。

3.运行提示535错误,说授权error。才知道是那个授权码的原因。于是赶紧获取邮箱的授权码。

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

#coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 第三方 SMTP 服务
mail_host="smtp.qq.com" #设置服务器
mail_user="******@qq.com" #用户名
mail_pass="*********" #口令,QQ邮箱是输入授权码,在qq邮箱设置 里用验证过的手机发送短信获得,不含空格

sender = '******qq.com'
receivers = ['******@qq.com','****@sina.com.cn'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
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

以上这篇浅谈Python用QQ邮箱发送邮件时授权码的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python 异常处理总结

       最近,做个小项目经常会遇到Python 的异常,让人非常头疼,故对异常进行整理,避免下次遇到异常不知所措,以下就...

Python 时间处理datetime实例

关于datetime也是简单介绍。因为有很多东西需要自己去使用,去查帮助才最有效。例子:计算上一个星期五并输出。解答:import datetime, calendar ...

Python实现从url中提取域名的几种方法

从url中找到域名,首先想到的是用正则,然后寻找相应的类库。用正则解析有很多不完备的地方,url中有域名,域名后缀一直在不断增加等。通过google查到几种方法,一种是用Python中自...

Python中类型检查的详细介绍

Python中类型检查的详细介绍

前言 大家都知道Python 是一门强类型、动态类型检查的语言。所谓动态类型,是指在定义变量时,我们无需指定变量的类型,Python 解释器会在运行时自动检查。 与静态类型语言(如 C...

python通过colorama模块在控制台输出彩色文字的方法

本文实例讲述了python通过colorama模块在控制台输出彩色文字的方法。分享给大家供大家参考。具体分析如下: colorama是一个python专门用来在控制台、命令行输出彩色文字...