您的位置:首页 > 编程语言 > Python开发

使用Python实现邮件发送

2017-04-20 22:02 357 查看
如果实现一个服务器的状态通知,可以选择通过邮件提醒的方式实现。Python自带的模块库中有支持smtp协议邮件发送的功能。

写了一个简单的小例子实现Python的邮件发送功能如下:

  1 #!/usr/bin/python  

  2 # -*- coding: cp936 -*-

  3 

  4 import os, smtplib, mimetypes

  5 from email.mime.text
import MIMEText

  6 from email.mime.image
import MIMEImage

  7 from email.mime.multipart
import MIMEMultipart

  8 

  9 mail_list = ["XXX@cqu.edu.cn"]

 10 mail_host =
"smtp.126.com"

 11 mail_user =
"XXXX"

 12 mail_psswd =
"XXXX"

 13 mail_psotfix =
"126.com"

 14 mail_from = mail_user +
"<"+mail_user + "@" + mail_psotfix +
">"

 15 

 16 def send_mail(subject, content, filename =
None):

 17     try:

 18         message = MIMEMultipart()

 19         message.attach(MIMEText(content))

 20         message["Subject"] = subject

 21         message["From"] = mail_from

 22         message["To"] =
";".join(mail_list)

 23        
if filename != None
and os.path.exists(filename):

 24             ctype, encoding = mimetypes.guess_type(filename)

 25            
if ctype is
None or encoding
is not
None:

 26                 ctype =
"application/octet-stream"

 27             maintype, subtype = ctype.split("/",
1)

 28             attachment = MIMEImage((lambda f: (f.read(), f.close()))(open(filename,
"rb"))[0], _subtype = subtype)

 29             attachment.add_header("Content-Disposition",
"attachment", filename = filename)

 30             message.attach(attachment)

 31 

 32         smtp = smtplib.SMTP()

 33         smtp.connect(mail_host)

 34         smtp.login(mail_user, mail_psswd)

 35         smtp.sendmail(mail_from, mail_list, message.as_string())

 36         smtp.quit()

 37 

 38        
return True

 39     except
Exception, errmsg:

 40        
print
"Send mail failed to: %s" % errmsg

 41        
return False

 42 

 43 if __name__ ==
"__main__":

 44    
if send_mail("python email title",
"send from python",
r"筷子兄弟 - 父亲.mp3"):

 45        
print
"send sucess"

 46     else:

 47        
print
"failed to send”

查看运行结果:

GreydeMac-mini:Chapter_02 greyzhang$ ls

c01.py diff.zip
mail.py

d1.py dns_parser.py
pydiff.py

d2.py email_demo.py
report.html

diff.py join.py
筷子兄弟 - 父亲.mp3

GreydeMac-mini:Chapter_02 greyzhang$ python email_demo.py 

send sucess

邮件发送成功,查看接收邮箱可以看到邮件已经收到。现在的唯一遗憾是附件的编码格式出了问题,成了乱码。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: