Python发送邮件smtplib.SMTP各报错问题的解决⽅法
经测试可⽤的发送邮件代码:
import smtplib
from import MIMEText
# 第三⽅ SMTP 服务
mail_host = "smtp.163" # SMTP服务器
mail_user = "username" # ⽤户名
mail_pass = "passwd" # 密码(这⾥的密码不是登录邮箱密码,⽽是授权码)
sender = 'sender_mail@163' # 发件⼈邮箱
receivers = ['receive_mail@qq'] # 接收⼈邮箱
content = 'Python Send Mail !'
title = 'Python SMTP Mail Test' # 邮件主题
message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启⽤SSL发信, 端⼝⼀般是465
smtpObj.login(mail_user, mail_pass) # 登录验证
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
问题解决与注意点:
1.报错:Error: A secure connection is requiered(such as ssl)
解决:因为邮箱SSL验证的问题,因此把smtplib.SMTP()改成smtplib.SMTP_SSL(),端⼝号为465qq用户名
2.报错:535, b'Error: authentication failed'
解决:可能是由于⽤户名不正确,因此代码中的⽤户名应该填写为邮箱地址@前⾯部分,或是在邮箱设置的帐户昵称,如下图昵称Morning 和马赛克部分,都可作为⽤户名
3.SMTP服务器可根据发送的邮箱做相应的选择,如代码中使⽤163邮箱则设为mail_host = "smtp.163"
可以改成"smtp.126"、"smtp.qq"等等
4.代码中的密码mail_pass为授权码,并⾮邮箱密码,授权码⽤于登录第三⽅邮件客户端的专⽤密码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论