python菜鸟教程中邮件发送代码如下:
sender = '[email protected]'
receivers = ['[email protected]'] # 接收邮件
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("菜鸟教程", 'utf-8') # 发送者
message['To'] = Header("测试", 'utf-8') # 接收者
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message.as_string())
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")
因为我是python3,所以一开始报输出那块有问题,改了输出代码以后运行,报错如下:
百度了很多办法,发现是因为菜鸟教程更新太慢 跟不上python的进步。解决办法是
smtpObj = smtplib.SMTP('localhost')
去掉参数
smtpObj = smtplib.SMTP()
继续运行 ,但是结果是:
Error: 无法发送邮件
继续解决如下:
sender = '[email protected]'
receivers = ['[email protected]'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("菜鸟教程", 'utf-8') # 发送者
message['To'] = Header("测试", 'utf-8') # 接收者
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect("smtp.qq.com") # 连接 qq 邮箱
smtpObj.login(sender, "XXXXXXX") # 发送者账号和授权码
smtpObj.sendmail(sender, receivers, message.as_string())
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")
运行将成功。其中XXXX是发送者的授权码,搞到授权码步骤如下:
1.打开QQ邮箱
2.点设置找到账号
3.开启SMTP服务
因为我之前测试的时候开启了,现在状态显示关闭,将授权码写入代码即可运行