[Python]python3使用smtplib发送邮件,带xlsx附件

本文介绍了如何使用Python3的smtplib库发送带有xlsx附件的邮件,适合在开发中将数据导出为Excel并根据权限发送给用户。此外,还提到了yagmail这个第三方库,它提供更便捷的邮件发送方式,通过pip安装后,可以从GitHub项目获取更多详情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近带学生给学校开发一套系统,后台为了简单起见把能见数据都全部导出成excel并根据每个人的权限不同保存成内容不同的xlsx文件通过邮件发送到指定邮箱。其实这都可以用java直接写完,只不过最近看了看python也本着学习的心态练习一下python 

#encoding=utf8
import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
# 第三方 SMTP 服务
mail_host = "*******"  # 设置服务器
mail_user = "*******"  # 用户名
mail_pass = "********"  # 口令

sender = '*****'
receivers = ['*****']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
content = MIMEText('test')
message = MIMEMultipart()
message.attach(content)
message['From'] = Header("Easy", 'utf-8')
message['To'] = Header("测试", 'utf-8')
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
xlsx = MIMEApplication(open('test.xlsx', 'rb').read())
xlsx["Content-Type"] = 'application/octet-stream'
xlsx.add_header('Content-Disposition', 'attachment', filename='test.xlsx')
message.attach(xlsx)
try:
    smtpObj
为了实现通过Python发送Excel附件邮件,可以组合使用`email`库来构建邮件结构以及`smtplib`来进行邮件传输。下面是一个具体的例子: ```python import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders def send_email_with_excel_attachment(sender_address, sender_pass, receiver_address, subject, body, excel_path): message = MIMEMultipart() message['From'] = sender_address message['To'] = receiver_address message['Subject'] = subject # 添加邮件正文 message.attach(MIMEText(body, 'plain')) # 打开文件并设置为MIME应用/八位字节流对象 with open(excel_path, "rb") as attachment: part = MIMEBase('application', 'octet-stream') part.set_payload(attachment.read()) encoders.encode_base64(part) part.add_header( 'Content-Disposition', f'attachment; filename= {excel_path}', ) message.attach(part) session = smtplib.SMTP('smtp.gmail.com', 587) # 使用Gmail作为SMTP服务器为例 session.starttls() # 启用TLS加密 session.login(sender_address, sender_pass) # 登录发件箱 text = message.as_string() session.sendmail(sender_address, receiver_address, text) session.quit() send_email_with_excel_attachment("your_email@gmail.com", "password", "receiver@example.com", "Test Subject", "This is test mail.", "/path/to/excel/file.xlsx") ``` 此代码片段展示了创建一个多部分消息体,其中一部分是纯文本形式的邮件主体,另一部分则是以二进制方式读取的Excel文件,并将其编码成base64格式附加到邮件中[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sempronx86

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值