运维人

Python发送邮件(邮件内容从文件读入)

有个需求,利用python脚本发出来的邮件的内容是从文件读取的。并且保持这个文件原有的格式。

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import smtplib,os,sys
from email.mime.text import MIMEText

mailto_list=['guomaoqiu@gmail.com']
mail_host='smtp.qq.com'
mail_port='25'
mail_user='2399447849'
mail_pass='xxxxxxxxx'   #->你懂的...
mail_postfix='qq.com'

filename = "/tmp/test.log"   #->将要读取作为邮件内容的文件

fo = open(filename,"rb")
filecon = fo.read();
str1 = "<pre>{0}</pre>".format(filecon)  

def send_mail(to_list,sub,content):
    me="Code Sync Notice"+"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content,_subtype='html',_charset='utf-8')
    msg['Subject'] = sub
    msg['From']=me
    msg['to']=";".join(to_list)
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception, e:
        print str(e)
        return False
if __name__=='__main__':
   if send_mail(mailto_list,"New Flies Are Added",str1):
        print "发送成功"
   else:
        print "发送失败"

执行结果:

Screenshot from 2015-09-10 22:26:00

之前出现一个问题,就是我在文件读取之后写成这样的,未对读入的字符串格式格式化。

fo = open(filename,"rb")
filecon = fo.read();
str1 = filecon

而这样发出来的邮件结果却是这样的

Screenshot from 2015-09-10 22:28:19

发送 HTML 形式的邮件,需要 email.mime.text 中的 MIMEText 的 _subtype 设置为 html,并且 _text 的内容应该为 HTML 形式

可参考:http://m.blog.chinaunix.net/uid-23802873-id-4477364.html

 

 

    分享到:
码字很辛苦,转载请注明来自运维人《Python发送邮件(邮件内容从文件读入)》

评论