使用Python实现邮件发送

来源:互联网 发布:淘宝怎么找指定客服 编辑:程序博客网 时间:2024/05/03 11:57

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

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

  1 #!/usr/bin/python  

  2 # -*- coding: cp936 -*-

  3 

  4 import os, smtplib, mimetypes

  5 from email.mime.textimport MIMEText

  6 from email.mime.imageimport MIMEImage

  7 from email.mime.multipartimport 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 != Noneand os.path.exists(filename):

 24             ctype, encoding = mimetypes.guess_type(filename)

 25             if ctype isNone or encodingis notNone:

 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     exceptException, 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.zipmail.py

d1.py dns_parser.pypydiff.py

d2.py email_demo.pyreport.html

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

GreydeMac-mini:Chapter_02 greyzhang$ python email_demo.py 

send sucess


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


1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 六个月宝宝喝贝因美过敏怎么办 超市盘点少的货扣员工工资怎么办 孩子东西在学校被偷了怎么办 想退出却不舍的感情不知怎么办? 我被老板摸全身失眠有阴影怎么办 不知道绑定支付宝的微博账号怎么办 银行卡丢了补办后支付宝账户怎么办 未激活的银行卡被锁定了怎么办 手机网银上的钱被盗走了怎么办 支付宝支付失败银行卡扣了钱怎么办 小程序的二次验证码丢失怎么办 苹果手机不小心购买游戏币怎么办 在淘宝买的洗衣粉是假的怎么办 京东快递电话填错了怎么办 新买的手机卡被注册过支付宝怎么办 手机卡掉了别人登陆支付宝怎么办 手机卡注销了支付宝欠的钱怎么办 手机丢了支付宝和微信里的钱怎么办 新办的手机号已被注册支付宝怎么办 新办的移动卡不能注册支付宝怎么办 新办的宝卡支付宝注册过怎么办 办支付宝后银行卡被盗刷怎么办 微信扫二维码送平衡群发了怎么办车 拼多多没收到货点了确认收货怎么办 拼多多收货地址填错了怎么办 京东订单申请退款已发货怎么办 手机播放声音的地方进水了怎么办 手机出声音的地方进水了怎么办 手机听声音的地方进水了怎么办 装修公司我只要基装她不肯怎么办 雄迈未来家庭忘记账号和密码怎么办 地方文件和国家政策有冲突怎么办? 网上贷款放款成功没有到账怎么办 我来贷放款中不到账怎么办 手持身份证被别人网贷了怎么办 身份证被别人做了网贷怎么办 身份证丢了被别人网贷了怎么办 户口身份证被注销了网贷怎么办 首付交了贷款办不下来怎么办 付首付后贷款没有批下来怎么办 交了首付贷款没有办下来怎么办