python自动发送邮件

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的报错,你再怎么检查你的内容和其他的都是不行的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值