自动发送邮件工具-Auto Send Mail Tool (ASM)
2016-07-17 18:07
387 查看
joyyzhang将源码已经放在了github上
https://github.com/zydirtyfish/asm.git
欢迎Fork!!!
joyyzhang为了能够实时监测服务器上程序的运行状态实现的一个自动发送email的程序。
首先看一下README.md
asm
Auto Send Mail Tool ( ASM )
This tool can help you to send emails in the form of HTML automatically. The only thing you need to do is to write the mail_content according to the format given in the source file. You can also modify this file by using the api given in writeAPI.py.
Start your “Hello world” mail by excuting sh auto_send.sh if you have create the mail_content metioned above.
send_mail.py
This is the kernel file by encapsulating smtplib. There is no need for you to know how it is realized, because you only need to modify the mail_content if you want to send mails automatically.
writeAPI.py
You can modify the mail_content much easier by using the api in this file.
- write_content(html) : To modify the mail_msg
- write_send_list(send_list) : To modify the send_list
- write_accessory_list(accessory_list) : To modify the accessory list
- write_img_list(img_list) : To modify the images contained in the main_msg
- write_all(content,subject,encoding,send_list,accessory_list,img_list) : To modify the parameters all above
mail_config
Always likes this.
mail_content
Always likes this.
核心代码段如下
send_mail.py
[注意]使用ASM是必须先开启邮箱的SMTP服务,此时会有一个SMTP验证密码,上面配置文件中的密码需要填写此密码,而不是你的邮箱密码。
https://github.com/zydirtyfish/asm.git
欢迎Fork!!!
joyyzhang为了能够实时监测服务器上程序的运行状态实现的一个自动发送email的程序。
首先看一下README.md
asm
Auto Send Mail Tool ( ASM )
This tool can help you to send emails in the form of HTML automatically. The only thing you need to do is to write the mail_content according to the format given in the source file. You can also modify this file by using the api given in writeAPI.py.
Start your “Hello world” mail by excuting sh auto_send.sh if you have create the mail_content metioned above.
send_mail.py
This is the kernel file by encapsulating smtplib. There is no need for you to know how it is realized, because you only need to modify the mail_content if you want to send mails automatically.
writeAPI.py
You can modify the mail_content much easier by using the api in this file.
- write_content(html) : To modify the mail_msg
- write_send_list(send_list) : To modify the send_list
- write_accessory_list(accessory_list) : To modify the accessory list
- write_img_list(img_list) : To modify the images contained in the main_msg
- write_all(content,subject,encoding,send_list,accessory_list,img_list) : To modify the parameters all above
mail_config
Always likes this.
[mail_config] sender = XXXX@yyy.com It is your own email address sender_name = your_name Your own name password = **** Password of you email, always the smtp password mail_host = smtp.yyy.com SMTP server domain. You can always find it on the Internet mail_postfix = yyy.com
mail_content
Always likes this.
[mail_content] send_list = XXXX@yyy.com who will receive this mail subject = Pic Subject of this mail encoding = utf-8 Encoding of the main content accessory_list = | Accessories contained in the mail mail_msg = *** main_content of the mail, always the html img_list = .jpg|.jpg images contained in the mail_msg
核心代码段如下
send_mail.py
#!/usr/bin/python # -*- coding: UTF-8 -*- import smtplib from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header import ConfigParser import string,os,sys def send_list(): try: cf = ConfigParser.ConfigParser() cf.read("mail_content") send_str=cf.get("mail_content","send_list") return send_str.split("|") except: print "请在mail_content文件的[mail_content]元素下添加sendlist项" exit() def get_config(): cf = ConfigParser.ConfigParser() try: cf.read("mail_config") mail_config={} mail_config["sender"]=cf.get("mail_config","sender") mail_config["sender_name"]=cf.get("mail_config","sender_name") mail_config["password"]=cf.get("mail_config","password") mail_config["mail_host"]=cf.get("mail_config","mail_host") mail_config["mail_postfix"]=cf.get("mail_config","mail_postfix") except: print "请给出完整的mail_config文件,否则无法完成邮件发送,mail_config示例在源码中含有" exit() return mail_config def get_accessory_list(): cf =ConfigParser.ConfigParser() try: cf.read("mail_content") accessory_list = cf.get("mail_content","accessory_list") if accessory_list != "": return accessory_list.split("|") else: return [] except: return [] def get_content(): mail_content = {} cf = ConfigParser.ConfigParser() try: cf.read("mail_content") except: print "请给出完整的mail_content文件,否则无法完成邮件发送,mail_content示例在源码中含有" exit() try: mail_content["subject"]=cf.get("mail_content","subject") except: mail_content["subject"]="NO TITLE" try: mail_content["encoding"]=cf.get("mail_content","encoding") except: mail_content["encoding"]="utf-8" try: mail_content["mail_msg"]=cf.get("mail_content","mail_msg") except: mail_content["mail_m 4000 sg"]="" try: img_list = cf.get("mail_content","img_list") mail_content["img_list"]=[] if img_list != "": mail_content["img_list"]=img_list.split("|") except: mail_content["img_list"]=[] return mail_content def send_mail_function(mail_config,content,send_list,accessory_list): #设置SMTP服务器、发送者、口令 sender = mail_config["sender"] password = mail_config["password"] mail_host= mail_config["mail_host"] #设置接受者列表 receivers = send_list # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 msgRoot = MIMEMultipart('related') msgRoot['From'] = mail_config["sender_name"]+"<"+sender+">" #msgRoot['To'] = "" msgRoot['Subject'] = Header(content["subject"], content["encoding"]) msgAlternative = MIMEMultipart('alternative') msgRoot.attach(msgAlternative) msgAlternative.attach(MIMEText(content["mail_msg"], 'html', 'utf-8')) i = 1; for img in content["img_list"]: # 指定图片为当前目录 fp = open(img, 'rb') msgImage = MIMEImage(fp.read()) fp.close() # 定义图片 ID,在 HTML 文本中引用 msgImage.add_header('Content-ID', '<image%d>'%i) msgRoot.attach(msgImage) i=i+1 for accessory in accessory_list : fp = open(accessory, 'rb') accessory_file = MIMEImage(fp.read()) fp.close() msgRoot.attach(accessory_file) try: smtpObj = smtplib.SMTP() smtpObj.connect(mail_host) smtpObj.login(sender,password) smtpObj.sendmail(sender, receivers, msgRoot.as_string()) print "Success!!!" except smtplib.SMTPException,e: print e print "Error: Fail To Send" smtpObj.close() def main(): #print get_content() send_mail_function(get_config(),get_content(),send_list(),get_accessory_list()) if __name__ == "__main__": main()
[注意]使用ASM是必须先开启邮箱的SMTP服务,此时会有一个SMTP验证密码,上面配置文件中的密码需要填写此密码,而不是你的邮箱密码。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例