1.使用qq邮箱或者企业邮箱发送邮件
email_host='smtp.exmail.qq.com' #企业邮箱服务器
#email_host='smtp.qq.com' #QQ邮箱服务器
from_addr='xxxx@ebon.com' #发件人企业邮箱地址
#from_addr='yyyy@qq.com' #发件人qq邮箱地址
pwd="tojCDoQfjHNYKFRe" #企业邮箱授权码
#pwd='xoflkauatyxobejh' #qq邮箱授权码
to_addr=['xxxx@ebon.com','xxxx@qq.com']
#to_addr='992719418@qq.com'
email_content="Python test email"
email_subject="Again"
msg=MIMEText(email_content,'plain','utf-8')
msg['subject']=Header(email_subject,'utf-8').encode()
msg['From']='{}'.format(from_addr)
#msg['To']=to_addr #如果只有一个收件人,可用这条语句
msg['To']=','.join(to_addr) #如果有多个收件人,可用这条语句
try:
smtp=smtplib.SMTP() #无需使用smtplib.SMTP_SSL()
smtp.connect(email_host) #无需端口号
smtp.login(from_addr,pwd)
smtp.sendmail(from_addr,to_addr,msg.as_string())
smtp.quit()
print("发送成功")
except smtplib.SMTPException as e:
print("Error:%s" %e)
注意:腾讯企业邮箱和qq邮箱,虽然都是使用SSL协议,但是如果使用 smtplib.SMTP_SSL()或者说connect带有端口号,都会报:ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
其中msg对象中如果包含中文,需要通过Header
对象进行编码。
msg['To']
接收的是字符串而不是list,如果有多个邮件地址,用,
分隔即可。
2.使用163邮箱发送邮件
smtpserver='smtp.163.com'
sender='xxxxx@163.com' # 163邮箱账号
psw='xxxxx' #授权码
receiver=['XXXX@qq.com','xxxxx@163.com'] # 收件人
# ----------2.编辑邮件的内容------
subject='xinlei'
body='xinlei' # 定义邮件正文为html格式
msg=MIMEText(body,'plain','utf-8')
msg['Subject']=Header(subject,'utf-8')
msg['From']='landy'+'<'+sender+'>'
msg['To']=','.join(receiver)
# ----------3.发送邮件------
smtp = smtplib.SMTP()
smtp.connect(smtpserver) # 连服务器
smtp.login(sender, psw) # 登录
smtp.sendmail(sender,receiver,msg.as_string()) # 发送
smtp.quit()
注意:收件人一定要有你的发送的163邮箱账号,虽然还没搞清楚为什么,但是如果没有就会出现554的报错,你再怎么检查你的内容和其他的都是不行的。