python3 发送邮件

python 3 发送邮件其实很简单,不过有很多需要注意的地方:

1.比如使用网易邮箱开启了应用密码,则应该使用应用密码
2.尽可能使用 SSL,但是使用 SSL 需要注意配置

smtplib.SMTP_SSL(smtp_server,smtp_port)

否则会报错

3.网易邮箱或一些邮箱必须加上

msg['From'] = 
msg['To'] = 
msg['Subject'] = 

否则会发送不成功

完整代码如下:

def send_email(self,ticket_id,user=None):

    def format_addr(s):
        name, addr = parseaddr(s)
        return formataddr((Header(name, 'utf-8').encode(), addr))

    from_addr = 
    password = 
    smtp_server = 
    to_addr = 
    smtp_port = 465

    msg = MIMEText("hello,world", 'plain', 'utf-8')
    # 发送邮箱地址
    msg['From'] = format_addr("python 开发者" % from_addr)
    # 收件箱地址
    msg['To'] = to_addr
    # 主题
    msg['Subject'] = "测试测试" % ticket_id

    server = smtplib.SMTP_SSL(smtp_server,smtp_port)
    server.set_debuglevel(1)
    server.login(from_addr, password)
    server.sendmail(from_addr, to_addr, msg.as_string())
    server.quit()