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

Python中的Message()类实现消息的多媒体附件发送

发布时间:2023-12-24 01:44:06

在Python中,可以使用Message类来实现消息的多媒体附件发送。Message类位于email.message模块中,可以用于构建包含文本、图片、音频等附件的邮件消息。

以下是一个使用Message类发送多媒体附件的例子:

import smtplib
from email.message import Message
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.audio import MIMEAudio

def send_email_with_attachments(sender, receiver, subject, body, attachment_paths):
    # 创建邮件消息对象
    message = MIMEMultipart()
    message["From"] = sender
    message["To"] = receiver
    message["Subject"] = subject

    # 添加文本内容
    message.attach(MIMEText(body, "plain"))

    # 添加附件
    for attachment_path in attachment_paths:
        if attachment_path.endswith(".txt"):
            # 添加文本附件
            with open(attachment_path, "rb") as file:
                attachment = MIMEText(file.read())
            attachment.add_header("Content-Disposition", "attachment", filename=attachment_path)
            message.attach(attachment)
        elif attachment_path.endswith((".jpg", ".jpeg", ".png", ".gif")):
            # 添加图片附件
            with open(attachment_path, "rb") as file:
                attachment = MIMEImage(file.read())
            attachment.add_header("Content-Disposition", "attachment", filename=attachment_path)
            message.attach(attachment)
        elif attachment_path.endswith((".wav", ".mp3")):
            # 添加音频附件
            with open(attachment_path, "rb") as file:
                attachment = MIMEAudio(file.read())
            attachment.add_header("Content-Disposition", "attachment", filename=attachment_path)
            message.attach(attachment)
        else:
            print(f"Unsupported attachment format: {attachment_path}")

    # 发送邮件
    with smtplib.SMTP("smtp.gmail.com", 587) as smtp:
        smtp.starttls()
        smtp.login(sender, "password")  # 替换为实际的发件人邮箱密码
        smtp.send_message(message)

# 发件人和收件人邮箱地址
sender_email = "sender@gmail.com"
receiver_email = "receiver@gmail.com"

# 邮件主题和内容
subject = "Testing attachments in Python"
body = "Hello,

This is a test email with attachments."

# 附件文件路径列表
attachment_paths = ["file.txt", "image.jpg", "audio.mp3"]

# 发送邮件
send_email_with_attachments(sender_email, receiver_email, subject, body, attachment_paths)

在上述例子中,我们首先创建了Message对象,然后设置了发件人、收件人和主题等信息。接下来,我们使用MIMETextMIMEImageMIMEAudio类分别添加了文本、图片和音频附件到邮件消息中。最后,我们使用SMTP类与SMTP服务器建立连接,并调用send_message方法发送邮件。

需要注意的是,这只是一个简单的示例。实际使用中,你需要根据具体情况调整代码,例如替换发件人邮箱、密码等。另外,你还可以通过添加更多的条件判断来支持其他类型的附件,如pdf、xlsx等。

总结起来,Python中的Message类提供了发送多媒体附件的便利方式。通过构建MIMEMultipart对象,并使用MIMETextMIMEImageMIMEAudio等类来添加不同类型的附件,你可以轻松地发送包含文本、图片、音频等多媒体附件的邮件。