python有内置的模块支持发送邮件email,smtp。
我这里是开启了163邮箱的smtp授权,所以可以这样第三方登录。
发现一个问题,格式化发送人收件人地址的时候必须加<>,否则编码会报错。
def format_address(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
from_address = '发件人账号'
# 授权码,不是真正的密码
pwd = '授权码'
to_address = '收件人的账号'
smtp_server = 'smtp.163.com'
msg = MIMEText('测试消息', 'plain', 'utf-8')
msg['From'] = format_address('发送人<{}>'.format(from_address))
msg['To'] = format_address('管理员<{}>'.format(to_address))
msg['Subject'] = Header('运行状态', 'utf-8').encode()
server = smtplib.SMTP(smtp_server, 25)
server.login(from_address, pwd)
server.sendmail(from_address, [to_address], msg.as_string())
server.quit()
上面发送的是纯文本,如果要发送html页面,只需要在构造msg的时候传参修改下即可,
msg = MIMEText(data, 'html', 'utf-8')
data为html信息