import smtplib from email.header import Header from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage import pandas as pd class SendEmail: def __init__(self, host="smtp.126.com", username="@126.com", password=""): # 连接邮箱服务端 self.email_con = smtplib.SMTP(host=host, port=25) # 登录邮箱 self.email_con.login(username, password) # 创建邮件对象 self.msg = MIMEMultipart() def email_header(self, subject, from_email="@126.com <@126.com>", to_email=[]): # 设置主题 self.msg["Subject"] = Header(subject, "utf-8").encode() # 设置邮件发送人 self.msg["From"] = from_email # 设置邮件的接收人 self.msg["To"] = ";".join(to_email) def email_text(self, text): # 设置邮件文本内容 text = MIMEText(text, "plain", "utf-8") # 添加邮件内容 self.msg.attach(text) def email_htm(self, html): # 设置邮件文本内容 html = MIMEText(html, "html", "utf-8") # 添加邮件内容 self.msg.attach(html) def email_imag(self, filename, image_name): with open(filename, "rb") as f: image_data = f.read() image = MIMEImage(image_data) image["Content-Disposition"] = 'attachment; filename="{}"'.format(image_name) # 添加邮件内容 self.msg.attach(image) def email_imag_(self, filename): with open(filename, "rb") as f: image_data = f.read() image = MIMEImage(image_data) image.add_header("Content-ID", "<img1>") # 添加邮件内容 self.msg.attach(image) image_html = """ <img src='cid:img1'> """ image_html = MIMEText(image_html, "html", "utf-8") self.msg.attach(image_html) def email_fujian(self, filename, fujian_name): with open(filename, "rb") as f: file_data = f.read() fujian = MIMEText(file_data, "base64", "utf-8") fujian["Content-Disposition"] = 'attachment; filename="{}"'.format(fujian_name) # 添加邮件内容 self.msg.attach(fujian) def send_email(self, from_email, to_email, msg): self.email_con.sendmail(from_email, to_email, msg.as_string()) def __del__(self): self.email_con.quit() if __name__ == '__main__': df = pd.read_excel("./output.xlsx", sheet_name="Sheet1") df.set_index("序号", inplace=True) print(df) from_email = "@126.com" to_email = ["@qq.com", "@126.com"] con = SendEmail() con.email_header("邮件主题", from_email, to_email) msg = con.email_text("测试邮件发送") html = f""" <h1>我是正文的大标题</h1> <p>我是正文段落</p> {df.to_html()} <img src='https://img1.baidu.com/it/u=1161835547,3275770506&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500'> """ con.email_htm(html) # con.email_imag("./meinu.jpg", "meinu.jpg") # con.email_imag_("./meinu2.jpg") # con.email_fujian("./Windows下安装MySQL详细教程.doc", "fujian.doc") con.send_email(from_email, to_email, con.msg)
python发送邮件用法-SendEmail类编写
本文介绍了如何使用Python的smtplib库和email模块创建一个SMTP邮件发送类,包括设置邮件头、纯文本内容、HTML内容、图片附件和文件附件。示例代码展示了如何根据Excel数据动态构造邮件内容并发送。
摘要由CSDN通过智能技术生成