版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hzk594512323/article/details/85127448
首先,使用SMTP实现发送邮件的话,需要先获取一个代发邮件的授权码。
以163邮箱为例:
登录邮箱后--点击设置--客户端授权码--开启。如图
其实网上已经有很多类似的模块介绍和试用了,这边主要是想记录下自己写的一个类。调用方式简单,可以直接将py文件贴到项目中,import后直接调用,方便快捷,简单高效。
# coding=utf-8
import sys, os, fileinput, smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
reload(sys)
sys.setdefaultencoding('utf-8')
class EmailUtils:
def __init__(self, mailto_list, email_title, email_content):
self.mailto_list = mailto_list
self.email_title = email_title
self.email_content = email_content
# 发送邮件
def send_mail(self):
# 设置服务器名称、用户名、密码以及邮件后缀
mail_host = 'smtp.163.com'
mail_user = '[email protected]' # 邮箱地址
mail_pass = 'xxxxxxxx' # 即授权码
# mailto_list = ['[email protected]']
me = mail_user
msg = MIMEMultipart()
msg['Subject'] = self.email_title
msg['From'] = me
msg['To'] = ",".join(self.mailto_list)
# html = '''<!DOCTYPE html>dddd</html>'''
context = MIMEText(self.email_content, _subtype='html', _charset='utf-8') # 解决乱码
msg.attach(context)
send_smtp = smtplib.SMTP()
send_smtp.connect(mail_host)
send_smtp.login(mail_user, mail_pass)
send_smtp.sendmail(me, self.mailto_list, msg.as_string())
send_smtp.close()
if __name__ == '__main__':
mail_content = """"""
mail_content += "APP名称:" + "\n"
mail_content += "编译时间" + "\n"
mail_content += "编译版本" + "\n"
mail_content += "测试时间" + "\n"
mail_content += "\n"
# 读取一个文件
file_input_stream = fileinput.input(os.getCwd() + "\\testResult\\result.log")
for line in file_input_stream:
mail_content += line + "\n"
EmailUtil.send_mail(['[email protected]','[email protected]','[email protected]'], "test", mail_content)