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

在Python中使用MIMEBase()发送带Excel文件附件的邮件

发布时间:2024-01-17 01:35:28

在Python中,可以使用MIMEBase来创建包含Excel文件附件的邮件。

下面是一个使用MIMEBase发送带Excel文件附件的邮件的例子:

import smtplib
import email.utils
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email import encoders

# 你的电子邮件帐户信息
from_email = 'your_email@example.com'
from_password = 'your_password'

# 收件人和主题
to_email = 'recipient_email@example.com'
subject = '带Excel附件的邮件示例'

# 创建一个多部分邮件对象
msg = MIMEMultipart()
msg['From'] = email.utils.formataddr(('Sender Name', from_email))
msg['To'] = to_email
msg['Subject'] = subject

# 邮件正文
body = MIMEText('这是一封带有Excel附件的邮件示例')
msg.attach(body)

# 附件路径
file_path = '/path/to/excel_file.xlsx'

# 打开并读取Excel文件
with open(file_path, 'rb') as f:
    # 创建附件对象
    attachment = MIMEBase('application', 'octet-stream')
    attachment.set_payload(f.read())

# 将附件编码
encoders.encode_base64(attachment)

# 添加附件的头信息
attachment.add_header('Content-Disposition', f'attachment; filename="{file_path}"')

# 将附件添加到邮件
msg.attach(attachment)

try:
    # 连接到SMTP服务器
    server = smtplib.SMTP('smtp.example.com', 587)
    server.starttls()
    
    # 登录到你的帐户
    server.login(from_email, from_password)
    
    # 发送邮件
    server.sendmail(from_email, to_email, msg.as_string())
    
    # 关闭连接
    server.quit()
    
    print('邮件发送成功')
except Exception as e:
    print(f'邮件发送失败: {str(e)}')

在上面的代码中,我们首先创建了一个MIMEMultipart对象并设置了发件人、收件人和主题。然后,我们创建了一个MIMEText对象作为邮件的正文内容,并将其附加到MIMEMultipart对象中。

接下来,我们打开并读取要作为附件发送的Excel文件。然后,我们创建一个MIMEBase对象,并将Excel文件的内容设置为该附件对象的内容。我们还使用encode_base64函数对附件进行编码,并添加了附件的头信息。

最后,我们连接到SMTP服务器并登录到我们的帐户。然后,我们使用sendmail函数发送邮件,并关闭连接。

请确保在代码中将your_email@example.comyour_password替换为你自己的电子邮件帐户信息,并将recipient_email@example.com替换为你要发送邮件的收件人的电子邮件地址。此外,需要将smtp.example.com替换为你的SMTP服务器地址。

这是一个使用MIMEBase发送带Excel文件附件的基本示例。你可以根据需要对代码进行修改和调整。