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

使用Python中email.mime.baseMIMEBase()发送带附件的电子邮件

发布时间:2024-01-04 05:35:18

在Python中,使用email.mime.baseMIMEBase()函数可以创建一个MIMEBase对象,用于实现发送带附件的电子邮件。下面是一个使用例子,展示如何发送带有附件的电子邮件:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

# 设置邮件发送者和接收者
sender = "sender@example.com"
receiver = "receiver@example.com"

# 创建一个带有附件的邮件对象
msg = MIMEMultipart()
msg["From"] = sender
msg["To"] = receiver
msg["Subject"] = "Test Email with Attachment"

# 添加附件
attachment_path = "path/to/attachment.txt"
attachment_name = "attachment.txt"

with open(attachment_path, "rb") as attachment:
    # 创建一个MIMEBase对象,并将附件内容添加到该对象中
    part = MIMEBase("application", "octet-stream")
    part.set_payload(attachment.read())
    
    # 使用Base64编码附件内容
    encoders.encode_base64(part)
    
    # 设置附件的文件名
    part.add_header("Content-Disposition", f"attachment; filename={attachment_name}")
    
    # 将附件对象添加到邮件对象中
    msg.attach(part)

# 发送邮件
try:
    smtp = smtplib.SMTP("smtp.example.com", 587)
    smtp.starttls()
    smtp.login("username", "password")
    smtp.sendmail(sender, receiver, msg.as_string())
    smtp.quit()
    print("Email sent successfully!")
except smtplib.SMTPException as e:
    print("Email sending failed:", e)

在上面的示例中,我们首先导入了所需的模块和函数:smtplib用于发送邮件,MIMEMultipart用于创建包含附件的邮件对象,MIMEBase用于设置附件和编码,encoders用于进行编码。

创建一个带有附件的邮件对象需要先创建一个MIMEMultipart对象,并设置邮件的发送者、接收者和主题。然后,我们打开要附加的附件文件,并读取其内容。接下来,我们创建一个MIMEBase对象,并将附件内容添加到该对象中。使用Base64编码对附件内容进行编码,并设置附件的文件名。最后,将附件对象添加到邮件对象中。

最后,我们使用SMTP对象连接到SMTP服务器,并进行身份验证。然后,调用sendmail方法发送邮件。如果发送成功,则打印"Email sent successfully!";如果发送失败,则打印错误信息。