使用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!";如果发送失败,则打印错误信息。
