使用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服务器需要验证登录,还需要提供发件人的密码。
