Python中使用MIMEMultipart()来发送带附件的邮件
发布时间:2023-12-25 18:28:18
在Python中,使用MIMEMultipart()来发送带附件的邮件能够确保邮件正文和附件都能够被正确地发送。下面是一个使用例子,包含了如何创建邮件对象、添加文本内容和附件,并发送邮件的完整代码。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
# 邮件发送者、接收者和标题
sender = "sender@example.com"
receiver = "receiver@example.com"
subject = "Email with Attachment"
# 创建邮件对象
msg = MIMEMultipart()
# 添加文本内容
body = "This is the email body."
msg.attach(MIMEText(body, 'plain'))
# 添加附件
filename = "attachment.txt"
attachment = open(filename, "rb")
# 设置附件的MIME类型
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
# 添加附件到邮件对象
msg.attach(part)
# 设置邮件标题、发送者和接收者
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = receiver
# 发送邮件
try:
smtpObj = smtplib.SMTP('smtp.example.com', 25)
smtpObj.sendmail(sender, receiver, msg.as_string())
print("邮件发送成功")
except Exception as e:
print("邮件发送失败")
print(e)
finally:
smtpObj.quit()
在上面的代码中,首先我们导入了必要的模块。MIMEMultipart是用于创建邮件对象的类,MIMEText是用于添加文本内容的类,MIMEBase是用于添加附件的类,encoders是用于编码附件的函数。
然后,我们定义了邮件的发送者、接收者和标题。接下来,通过MIMEMultipart()创建了一个邮件对象msg。
使用MIMEText()可以添加邮件的文本内容。在这个例子中,我们使用了plain作为文本的类型,并将文本内容设置为body变量。
接着,我们打开需要发送的附件attachment.txt,并使用MIMEBase()创建了一个用于添加附件的对象part。通过part.set_payload()设置了附件的内容,encoders.encode_base64()对附件进行了编码,part.add_header()设置了附件的属性。
然后,我们将附件添加到邮件对象msg中。
最后,我们设置了邮件的标题、发送者和接收者,并使用smtplib.SMTP()创建了一个SMTP对象smtpObj,然后使用smtpObj.sendmail()发送邮件。
在try块中,我们尝试发送邮件并打印出成功的消息。如果发送邮件失败,将打印出错误信息。
最后,我们使用smtpObj.quit()关闭了SMTP连接。
使用上述代码,你可以创建一个带有附件的邮件,并将其发送给指定的收件人。请确保将代码中的实际邮箱地址和SMTP服务器地址替换为你自己的地址。
