import os import smtplib # 处理多种形态的邮件主体我们需要 MIMEMultipart 类 from email.mime.multipart import MIMEMultipart # 发送字符串的邮件 from email.mime.text import MIMEText# 不管什么类型的附件,都可以用MIMEApplication from email.mime.application import MIMEApplication def email_send(data_f_p_t, page_file_list, content="数据报", content_text=None): """ 发送邮件 服务器所需信息 文件路径 邮件内容设置 :param data_f_p_t: 字典形式 fromaddr: 邮件发送方邮箱地址 password: 密码(部分邮箱为授权码) toaddrs: 邮件接受方邮箱地址 为列表形式 可以 群发 email_site: 发送方的 邮箱服务器地址 :param page_file_list: 文件路径 列表 :param content: 邮件标题 :param content_text: 内容 :return: """ fromaddr = data_f_p_t[‘fromaddr‘] password = data_f_p_t[‘password‘] toaddrs = data_f_p_t[‘toaddrs‘] # 接收方邮件地址 email_site = data_f_p_t[‘email_site‘] # 构造一个邮件体:正文 附件 message = MIMEMultipart() # 邮件内容设置 content 邮件 文本内容 if content_text: textApart = MIMEText(content_text) message.attach(textApart) # 循环添加 附件 路径 for page_file in page_file_list: page_file_txt = os.path.basename(page_file) # 获取 文件名 # 邮件 附件 设置 zipApart = MIMEApplication(open(page_file, ‘rb‘).read()) # excel 注意:此处basename要转换为gbk编码,否则中文会有乱码 zipApart.add_header(‘Content-Disposition‘, ‘attachment‘, filename=(‘gbk‘, ‘‘, page_file_txt)) message.attach(zipApart) # 放入附件 # message.attach(textApart) # 放入邮件 内容 message[‘From‘] = fromaddr # 发件人 message[‘To‘] = ‘,‘.join(toaddrs) # 收件人 message[‘Subject‘] = content # 设置邮件标题 try: # # 163 SMTP_SSL 邮箱服务器地址,端口默认为465 # server = smtplib.SMTP_SSL(email_site) # 163 SMTP_SSL 邮箱服务器地址,端口默认为465 server = smtplib.SMTP_SSL(email_site) server.login(fromaddr, password) # 登陆邮箱 server.sendmail(fromaddr, toaddrs, message.as_string()) # 发送邮件! print(‘success‘) server.quit() # 退出 except smtplib.SMTPException as e: print(‘error:‘, e) # 打印错误
原文地址:https://www.cnblogs.com/huangjiyong/p/12294824.html
时间: 2024-10-09 18:40:21