解决Python发送邮件失败问题

Python 实现简单的邮件发送

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服务
解决Python发送邮件失败问题_第1张图片
因为我之前测试的时候开启了,现在状态显示关闭,将授权码写入代码即可运行

你可能感兴趣的:(python)