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

Python邮件发送中如何使用email.mime.base模块的MIMEBase()函数添加附件

发布时间:2023-12-28 00:17:39

在Python中,可以使用email和smtplib模块来发送电子邮件。MIMEBase()函数是email.mime.base模块中的一个函数,它用于创建一个包含附件的邮件对象。下面是一个使用例子,包括创建邮件对象、添加附件和发送邮件的完整步骤。

首先,导入所需的模块。

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@gmail.com'  # 发件人邮箱
receiver = 'receiver@gmail.com'  # 收件人邮箱
subject = 'Sample Email with Attachment'  # 邮件主题

创建一个邮件对象,并设置邮件的基本信息。

msg = MIMEMultipart()
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = subject

接下来,读取并添加邮件正文。

body = 'This is the body of the email'
msg.attach(MIMEText(body, 'plain'))

创建一个MIMEBase对象,并设置它的MIME类型和文件名。

attachment = open('path/to/file.pdf', 'rb')  # 附件文件的路径
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
attachment.close()
filename = 'file.pdf'  # 附件文件名
part.add_header('Content-Disposition', 'attachment', filename=filename)

使用encoders模块进行编码,将附件对象添加到邮件对象中。

encoders.encode_base64(part)
msg.attach(part)

连接到SMTP服务器,并发送邮件。

server = smtplib.SMTP('smtp.gmail.com', 587)  # 邮件服务器和端口
server.starttls()
server.login(sender, 'password')  # 发件人邮箱和密码
server.sendmail(sender, receiver, msg.as_string())
server.quit()

完整示例代码如下:

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@gmail.com'
receiver = 'receiver@gmail.com'
subject = 'Sample Email with Attachment'

msg = MIMEMultipart()
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = subject

body = 'This is the body of the email'
msg.attach(MIMEText(body, 'plain'))

attachment = open('path/to/file.pdf', 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
attachment.close()
filename = 'file.pdf'
part.add_header('Content-Disposition', 'attachment', filename=filename)

encoders.encode_base64(part)
msg.attach(part)

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender, 'password')
server.sendmail(sender, receiver, msg.as_string())
server.quit()

注意,上述代码中的发件人邮箱和密码需要根据实际情况进行替换。附件文件的路径和文件名也需要根据实际情况进行修改。