python菜鸟教程中邮件发送代码如下:
sender = '1507376157@qq.com' receivers = ['429240967@qq.com'] # 接收邮件 # 三个参数:第一个为文本内容,第二个 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 = '1507376157@qq.com' receivers = ['1650159583@qq.com'] # 接收邮件,可设置为你的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服务 因为我之前测试的时候开启了,现在状态显示关闭,将授权码写入代码即可运行