利用python可以非常方便的实现邮件发送。代码也非常好理解。
import smtplib
from email.mime.text import MIMEText
# 登陆邮箱
sent=smtplib.SMTP()
sent.connect('smtp.qq.com',25)
mail_name="[email protected]" # 发送人邮箱地址
mail_password = "XXXXXXXX" # 注意:这里不是密码,而应该填写授权码!!
sent.login(mail_name, mail_password) # 登陆
# 编辑邮件内容
to = ['[email protected]'] # 收件人邮箱地址
content = MIMEText('你好,我是圣洁不吃冰淇淋') # 正文内容
content['Subject'] = '漂流瓶' # 邮件标题
content['From'] = mail_name # 发件人
content['To'] =','.join(to) #收件人,用逗号连接多个邮件,实现群发
# 发送邮件
try:
sent.sendmail(mail_name, to, content.as_string()) #3个参数 发送人,收件人,邮件内容
print('Success')
sent.close()
except smtplib.SMTPException:
print("Error:Fail")
其他部分的代码内容一样,但是在登陆邮箱部分,如果mail_password 填写的是你的真实的qq密码,则会收到报错。
# 登陆邮箱
sent=smtplib.SMTP()
sent.connect('smtp.qq.com',25)
mail_name="[email protected]"
mail_password = "*******" # 如果填写真实的qq密码,是会登陆失败的
sent.login(mail_name, mail_password) #登陆
然后,你会收到这样的报错信息:
SMTPAuthenticationError: (535, b’Login Fail. Please enter your authorization code to login. More information in http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256’)
报错是出在sent.login(mail_name, mail_password)
这个语句。
原因在于登陆时候,需要使用授权码替代密码。QQ邮箱推出了授权码,授权码用于第三方客户端登录,代替了第三方登录时使用的个人邮箱密码。
获取授权码一点都不复杂。
python作为第三方客户端登录,应当使用“授权码”替代密码用作登陆。
获取授权码:
qq邮箱 — “设置” — “账户— “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”
快给自己发一封邮件试试看吧~