解决Python发送邮件失败问题

    技术2025-01-31  10

    Python 实现简单的邮件发送

    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服务 因为我之前测试的时候开启了,现在状态显示关闭,将授权码写入代码即可运行

    Processed: 0.009, SQL: 9