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

如何在Python中使用MIMEMultipart()创建带有Json附件的邮件

发布时间:2023-12-25 18:33:12

要在Python中使用MIMEMultipart()创建带有Json附件的邮件,你需要使用Python的内置邮件模块smtplib和email库。

首先,你需要导入所需的模块:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

然后,你需要设置发件人、收件人和邮件主题:

sender_email = "sender@example.com"
receiver_email = "receiver@example.com"
subject = "Email with Json Attachment"

接下来,你需要创建一个MIMEMultipart对象来表示邮件,并设置发件人、收件人和主题:

msg = MIMEMultipart()
msg["From"] = sender_email
msg["To"] = receiver_email
msg["Subject"] = subject

接下来,你需要打开Json文件并将其作为附件添加到邮件中:

with open("data.json", "r") as file:
    attachment = MIMEApplication(file.read(), _subtype="json")
    attachment.add_header("Content-Disposition","attachment", filename="data.json")
    msg.attach(attachment)

在这段代码中,我们打开名为"data.json"的文件,使用read()方法读取文件内容,然后使用MIMEApplication类创建一个附件对象。在附件对象的头部中,我们设置Content-Disposition来指定附件的文件名为"data.json"。最后,我们将附件添加到MIMEMultipart对象中。

接下来,你需要通过SMTP服务器发送邮件。首先,你需要设置SMTP服务器的连接信息,并使用smtplib.SMTP类创建一个SMTP对象:

smtp_server = "smtp.example.com"
smtp_port = 587
smtp_username = "username"
smtp_password = "password"

smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
smtp_obj.starttls()
smtp_obj.login(smtp_username, smtp_password)

在这段代码中,你需要将"smtp.example.com"替换为你的SMTP服务器的地址,将587替换为SMTP服务器的端口号。同时,你需要将"username"和"password"替换为你的SMTP服务器的用户名和密码。

最后,你可以使用smtplib.SMTP.send_message()方法发送邮件:

smtp_obj.send_message(msg)
smtp_obj.quit()

整个代码示例如下所示:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

sender_email = "sender@example.com"
receiver_email = "receiver@example.com"
subject = "Email with Json Attachment"

msg = MIMEMultipart()
msg["From"] = sender_email
msg["To"] = receiver_email
msg["Subject"] = subject

with open("data.json", "r") as file:
    attachment = MIMEApplication(file.read(), _subtype="json")
    attachment.add_header("Content-Disposition","attachment", filename="data.json")
    msg.attach(attachment)

smtp_server = "smtp.example.com"
smtp_port = 587
smtp_username = "username"
smtp_password = "password"

smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
smtp_obj.starttls()
smtp_obj.login(smtp_username, smtp_password)

smtp_obj.send_message(msg)
smtp_obj.quit()

请确保将发件人、收件人、主题、附件以及SMTP服务器的连接信息设置为适合你的实际情况。