欢迎访问宙启技术站
智能推送

Python发送邮件附件:使用email.mime.application模块发送带有CSV文件附件的邮件

发布时间:2024-01-02 02:03:09

邮件附件是发送电子邮件时附加的文件。在Python中发送包含CSV文件附件的邮件,可以使用email.mime.application模块。email.mime.application模块提供了一个MIMEApplication类,该类用于创建并附加文件类型的附件。

以下是一个使用email.mime.application发送带有CSV文件附件的邮件的示例代码:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

# 设置发件人、收件人和主题
from_addr = 'sender@example.com'
to_addr = 'recipient@example.com'
subject = 'Email with CSV attachment'

# 创建邮件对象
msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject

# 构造邮件正文
body = 'This email contains a CSV file attachment.'
msg.attach(MIMEText(body, 'plain'))

# 读取CSV文件并创建附件对象
csv_file_path = 'path/to/csv/file.csv'
with open(csv_file_path, 'rb') as f:
    csv_attachment = MIMEApplication(f.read())

# 设置附件的Content-Disposition属性
csv_attachment.add_header('Content-Disposition', 'attachment', filename='data.csv')

# 将附件添加到邮件对象中
msg.attach(csv_attachment)

# 发送邮件
smtp_server = 'smtp.example.com'  # 设置SMTP服务器地址
smtp_port = 587  # 设置SMTP服务器端口号
smtp_username = 'smtp_username'  # 设置SMTP服务器用户名
smtp_password = 'smtp_password'  # 设置SMTP服务器密码

# 连接SMTP服务器并发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()  # 使用TLS加密连接
    server.login(smtp_username, smtp_password)
    server.sendmail(from_addr, to_addr, msg.as_string())

以上代码中,首先导入了需要的模块,包括smtplib用于SMTP连接和发送邮件,MIMEMultipart用于创建多部分邮件,MIMEText用于设置邮件正文,MIMEApplication用于创建文件类型的附件。

然后,设置发件人、收件人和主题,并创建了一个MIMEMultipart对象用于存储邮件的各个部分。

接下来,通过调用msg.attach()方法将文本正文部分添加到邮件对象中。

然后,使用open()函数读取CSV文件,并使用MIMEApplication构造一个附件对象。在add_header()方法中设置附件的Content-Disposition属性,并将附件添加到邮件对象中。

最后,设置SMTP服务器的地址、端口号、用户名和密码,并使用with语句连接SMTP服务器并发送邮件。在连接SMTP服务器之前,调用server.starttls()方法启用TLS加密。

以上就是使用email.mime.application模块发送带有CSV文件附件的邮件的示例代码。根据实际情况,你需要替换代码中的发件人、收件人、主题、SMTP服务器地址、端口号、用户名、密码和CSV文件路径等信息。