python 配置 SMTP 发送邮件,支持 SSL 和非 SSL

#!/usr/bin/python3

import smtplib
import traceback
from email.mime.text import MIMEText
from email.header import Header

def send_html_email(smtp_host, smtp_port, use_ssl, from_addr, password, to_addrs, subject, content):
  try:
    msg = MIMEText(content, _subtype='html', _charset='utf-8')
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = from_addr
    msg['To'] = ",".join(to_addrs)
    print("use_ssl: {}".format(use_ssl))
    if use_ssl:
      smtp = smtplib.SMTP_SSL()
    else:
      smtp = smtplib.SMTP()
    smtp.connect(smtp_host, smtp_port)
    smtp.set_debuglevel(1)
    smtp.login(from_addr, password)
    smtp.sendmail(from_addr, to_addrs, msg.as_string())
  except:
    print("邮件发送失败")
    traceback.print_exc()
  finally:
    smtp.quit()


if __name__ == '__main__':

  smtp_host = "smtp.126.com"
  smtp_ssl_port = 465
  smtp_port = 25
  from_addr = "nihaorz@126.com"
  password = "******"
  to_addrs = ["wangrui1066@geostar.com.cn", "nihaorz@qq.com"]
  subject = "python SMTP 测试邮件"
  content = '<a target="_blank" href="http://192.168.200.128">测试链接</a>'

  send_html_email(smtp_host, smtp_ssl_port, True, from_addr, password, to_addrs, subject, content)
  send_html_email(smtp_host, smtp_port, False, from_addr, password, to_addrs, subject, content)

支持 SMTP 及 SMTP_SSL

password 自行修改,qq、126、163 均需使用授权密码(非网页登录邮箱的账户密码)

posted @ 2022-07-08 17:25  Nihaorz  阅读(254)  评论(0)    收藏  举报