Python发送邮件

Python 发送邮件

在爬虫或者Web开发过程中,如果出现异常,需要及时的发送异常信息,或者用户的留言需要管理员进行审核的时候,发送邮件就显得很重要,在这里进行简单的邮件发送测试

1.先注册一个邮箱(163邮箱),然后开启smtp功能,可能要添加授权码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# -*- coding:utf-8 -*-

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

import smtplib


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


if __name__ == '__main__':
from_addr = 'XXX@163.com'
password = 'XXX'
to_addr = 'XXX@qq.com'
smtp_server = 'smtp.163.com'

msg = MIMEText('发送邮件测试', 'plain', 'utf-8')
msg['From'] = _format_addr('发件人<%s>' % from_addr)
msg['To'] = _format_addr('收件人<%s>' % to_addr)
msg['Subject'] = Header('运行状态', 'utf-8').encode()

try:
server = smtplib.SMTP(stmp_server, 25)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
except Exception as e:
print '发送失败'

注意:如果出现 smtplib.SMTPAuthenticationError: (535, ‘Error: authentication failed’) 这样的错误,可能是由于密码错误或者开启了授权码,而输入了确实邮箱密码,改成授权码后即可。

测试结果

发送邮件测试结果