由于发送邮件要标准化,所以之前写的邮件的功能就被要求修改格式,其他的都很简单,就信息的格式改发生了点问题
首先是正文的字体要改成Calibri
所以就使用了发送html格式的邮件(这里百度一大把)
但是我发现他们的发送html都不涉及css,所以临阵磨枪看了一点,还算比较简单
<p style="font-family:Calibri">Hi Research Team<br>
This is QC report.<br>
Best,<br>
Data Platform Team</p>
写出代码:
sender = '收件人的邮箱'
smtpserver = 'smtp.zoho.com' # 邮件服务器
username = Email.MAIL_USER
receiver = '收件人的邮箱'
file_name = '文件名'
msgRoot = MIMEMultipart()
msgRoot["To"] = receiver
title_name = datasource + ' ' + wizard_field_name + ' Topline Report ' + str(max_time)[:10] + ' data'
msgRoot['Subject'] = title_name # 邮件标题,这里我把标题设成了你所发的附件名
msg = '''<p style="font-family:Calibri">Hi Research Team<br>
This is QC report.<br>
Best,<br>
Data Platform Team</p>'''
msgText = MIMEText('%s' % msg, 'html', 'utf-8') # 以html形式呈现信息
msgRoot.attach(msgText)
att = MIMEText(open(file_dir, 'rb').read(), 'base64', 'utf-8') # 添加附件
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment; filename="%s"' % file_name
msgRoot.attach(att)
smtp = smtplib.SMTP_SSL(smtpserver, 465)
while 1: # 持续尝试发送,直到发送成功
try:
smtp.sendmail(sender, receiver, msgRoot.as_string()) # 发送邮件
break
except:
try:
# smtp.connect(smtpserver) # 连接至邮件服务器
smtp.login(username, password) # 登录邮件服务器
except:
print("failed to login to smtp server") # 登录失败
print("QC finish")