python 发送邮件----正文内容包含:文字、表格、附件
python 发送邮件----正文内容包含:文字、表格、附件
import pandas as pd import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart filename=‘C:\\Users\\thinkpad\\Desktop\\1.xlsx‘ #附件地址 def send_mail(to_list,sub,context,filename): #to_list:收件人;sub:主题;content:邮件内容 mail_host="smtp.163.com" #设置服务器 mail_user="XXXX@163.com" #用户名 mail_pass="xxxxxx" #口令 mail_postfix="163.com" #发件箱的后缀 me="服务器"+"<"+mail_user+"@"+mail_postfix+">" #这里的“服务器”可以任意设置,收到信后,将按照设置显示 msg = MIMEMultipart() #给定msg类型 msg[‘Subject‘] = sub #邮件主题 msg[‘From‘] = me msg[‘To‘] = ";".join(mailto_list) msg.attach(context)
#构造附件1 att1 = MIMEText(open(filename, ‘rb‘).read(), ‘xls‘, ‘gb2312‘) att1["Content-Type"] = ‘application/octet-stream‘ att1["Content-Disposition"] = ‘attachment;filename=‘+filename[-6:]#这里的filename可以任意写,写什么名字,邮件中显示什么名字,filename[-6:]指的是之前附件地址的后6位 msg.attach(att1) try: s = smtplib.SMTP() s.connect(mail_host) #连接smtp服务器 s.login(mail_user,mail_pass) #登陆服务器 s.sendmail(me, mailto_list, msg.as_string()) #发送邮件 s.close() return True except Exception: return False
if __name__ == ‘__main__‘: mailto_list=["zhanghaili@autoht.com"] a=pd.DataFrame({‘数列1‘:(1,1,1,1),‘数列2‘:(2,2,2,2),‘数列3‘:(3,3,3,3),‘数列4‘:(4,4,4,4)}) a.index={‘行1‘,‘行2‘,‘行3‘,‘行4‘} #这里dataframe类型a就是要输出的表格 sub="test" d=‘‘ #表格内容 for i in range(len(a)): d=d+""" <tr> <td>""" + str(a.index[i]) + """</td> <td>""" + str(a.iloc[i][0]) + """</td> <td width="60" align="center">""" + str(a.iloc[i][1]) + """</td> <td width="75">""" + str(a.iloc[i][2]) + """</td> <td width="80">""" + str(a.iloc[i][3]) + """</td> </tr>""" html = """<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <body> <div id="container"> <p><strong>测试程序邮件发送:</strong></p> <div id="content"> <table width="30%" border="2" bordercolor="black" cellspacing="0" cellpadding="0"> <tr> <td width="40"><strong>统计</strong></td> <td width="50"><strong>数列1</strong></td> <td width="60" align="center"><strong>数列2</strong></td> <td width="50"><strong>数列3</strong></td> <td width="80"><strong>数列4</strong></td> </tr>"""+d+""" </table> </div> </div> </div> </body> </html> """
context = MIMEText(html,_subtype=‘html‘,_charset=‘utf-8‘) #解决乱码 if send_mail(mailto_list,sub,context,filename): print ("发送成功") else: print( "发送失败")
原文地址https://blog.csdn.net/u010199776/article/details/76087721
原文:https://www.cnblogs.com/111testing/p/10533727.html