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

使用Python发送带有多个附件的MIMEText邮件

发布时间:2023-12-11 13:47:43

发送带有多个附件的MIMEText邮件可以使用Python的smtplib和email库。smtplib库提供了用于发送邮件的SMTP客户端功能,而email库提供了用于创建邮件消息的各种类和方法。

首先,我们需要导入相应的库:

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

接下来,我们需要设置发送邮件的SMTP服务器的地址和端口:

smtp_server = 'smtp.example.com'
smtp_port = 587

然后,我们需要设置发送者和接收者的信息:

sender = 'sender@example.com'
receiver = 'receiver@example.com'

现在,我们可以创建一个MIMEMultipart实例来组装邮件消息:

message = MIMEMultipart()
message['From'] = sender
message['To'] = receiver
message['Subject'] = 'Multiple Attachments'

body = """
This is a test email with multiple attachments.
"""

message.attach(MIMEText(body, 'plain'))

接下来,我们可以添加附件到邮件消息中。假设我们有两个文件 attachment1.txt 和 attachment2.txt:

filename1 = 'attachment1.txt'
filename2 = 'attachment2.txt'

attachment1 = open(filename1, 'rb')
attachment2 = open(filename2, 'rb')

part1 = MIMEBase('application', 'octet-stream')
part1.set_payload((attachment1).read())
encoders.encode_base64(part1)
part1.add_header('Content-Disposition', "attachment; filename= %s" % filename1)

part2 = MIMEBase('application', 'octet-stream')
part2.set_payload((attachment2).read())
encoders.encode_base64(part2)
part2.add_header('Content-Disposition', "attachment; filename= %s" % filename2)

message.attach(part1)
message.attach(part2)

最后,我们可以使用smtplib库中的SMTP方法发送邮件:

server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(sender, password)  # 如果需要验证登录,需要提供密码
text = message.as_string()
server.sendmail(sender, receiver, text)
server.quit()

完整的代码示例如下:

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

smtp_server = 'smtp.example.com'
smtp_port = 587

sender = 'sender@example.com'
receiver = 'receiver@example.com'

message = MIMEMultipart()
message['From'] = sender
message['To'] = receiver
message['Subject'] = 'Multiple Attachments'

body = """
This is a test email with multiple attachments.
"""

message.attach(MIMEText(body, 'plain'))

filename1 = 'attachment1.txt'
filename2 = 'attachment2.txt'

attachment1 = open(filename1, 'rb')
attachment2 = open(filename2, 'rb')

part1 = MIMEBase('application', 'octet-stream')
part1.set_payload((attachment1).read())
encoders.encode_base64(part1)
part1.add_header('Content-Disposition', "attachment; filename= %s" % filename1)

part2 = MIMEBase('application', 'octet-stream')
part2.set_payload((attachment2).read())
encoders.encode_base64(part2)
part2.add_header('Content-Disposition', "attachment; filename= %s" % filename2)

message.attach(part1)
message.attach(part2)

server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(sender, password)  # 如果需要验证登录,需要提供密码
text = message.as_string()
server.sendmail(sender, receiver, text)
server.quit()

在使用上述代码发送带有多个附件的MIMEText邮件时,需要确保附件文件存在,并且需要根据实际情况修改SMTP服务器信息、发件人、收件人以及附件的文件名。另外,如果SMTP服务器需要验证登录,还需要提供发件人的密码。