使用python发送邮件

最近在服务器上跑CNN,要跑好长时间。没耐心盯着terminal,遂使用>>重定向输出到一个文件里。为了在程序运行完成收到提醒,在程序里添加发送邮件的功能,这样一来在家也能debug了XD。
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def sendMail(msg,subject='Duang'):
smtp_server = "smtp-mail.outlook.com" #发件人邮箱账号
from_addr = "xxx@outlook.com"
password = "xxx"
sender = "csyguo"
to_addr = 'xxx@qq.com'
message = MIMEText(msg, 'plain', 'utf-8')
message['Subject'] = subject
message['From'] = 'severReport@outlook.com'
message['To'] = 'xxx@qq.com'
server = smtplib.SMTP(smtp_server, 587) #outlook的SMTP端口
# server.set_debuglevel(1)
# server.ehlo()
server.starttls() #在使用163邮箱时去掉这一行
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], message.as_string())
server.quit()
print 'successfully send an email to ' + to_addr

在测试的时候使用163邮箱遇到了554错误,解决方法如下:

  • 邮件标题不要写成‘test’
  • sender、receiver需要与message[‘From’] 、message[‘To’] 一致
  • 163邮箱端口为25