由於發送郵件要標準化,所以之前寫的郵件的功能就被要求修改格式,其他的都很簡單,就信息的格式改發生了點問題
首先是正文的字體要改成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")