python3发邮件脚本

官方文档中建议保存token,且token是每2小时更新一次。

所以token先保存在本地token.txt文件夹中,设定计划任务每1小时删除一下token.txt。虽然造成了浪费,对于发消息不多的人还是很简单的。

 

# -*- coding:utf-8 -*-
import smtplib,email,sys,datetime
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr

class sendmail(object):
	def zhuanma(self,s):
		name,addr=parseaddr(s)
		return formataddr((Header(name,'utf-8').encode(),addr))
		
	def writelog(self,proname,errcont):
		now=datetime.datetime.now()
		today=now.strftime('%Y-%m-%d')
		now=now.strftime('%Y-%m-%d %H:%M:%S')
		errfile=open(proname+today+'.log','a')
		errfile.write(now+' '+str(errcont)+'\n')
		errfile.close()
		
	def send(self,mailto,mailmessage,mailheader):
		from_addr='guoyabin@ccln.gov.cn'
		password='邮箱密码'
		to_addr=mailto
		smtp_server='smtp.ym.163.com'
		
		msg=MIMEText(mailmessage,'plain','utf-8')
		msg['From']=self.zhuanma('报警专用<%s>' % from_addr)
		msg['To']=to_addr
		msg['Subject']=Header(mailheader,'utf-8').encode()
		
		try:
			server=smtplib.SMTP(smtp_server,25)
			server.login(from_addr,password)
			server.sendmail(from_addr,to_addr,msg.as_string())
			server.quit()
		except:
			info = sys.exc_info()
			errcont=info[1]
			self.writelog('mailerror',errcont)
			print('邮件发送失败')

if __name__=='__main__':
	mail=sendmail()
	mail.send('guoyabin@ccln.gov.cn','我是邮件内s容','我是邮件标题s')

  

 

 

  

 

无耻的求一下赞助

posted @ 2017-07-04 15:15  一起走过的路  阅读(603)  评论(0编辑  收藏  举报