Python:发送邮件

发送邮件

之前用Java写过一个发送邮件的,这回来一个Python版本的,参照了廖雪峰(地址)的教程,只是优化了几个地方。

python Logo

源码

示例中是QQ邮箱,QQ邮箱的SMTP密码是授权码(位置在:设置->账户->SMTP…设置),需要先申请才能用,而且QQ邮箱强制使用SSL,请注意。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib


# 自己的邮箱地址
from_addr=""
# 邮箱密码(有的邮箱可能是使用的授权码)
password=""
# 发送给谁
to_addr=""
# 邮箱的smtp服务器地址
smtp_server="smtp.qq.com"


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

msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
msg['From'] = _format_addr('Python爱好者 <%s>' % from_addr)
msg['To'] = _format_addr('管理员 <%s>' % to_addr)
msg['Subject'] = Header('来自SMTP的问候……', 'utf-8').encode()

server = smtplib.SMTP(smtp_server, 587)
# 因为QQ邮箱使用的是SSL,所以必须使用下面这行代码.
server.starttls()
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()