使用 Python 发送多图片邮件

在现代社会,电子邮件依然是重要的沟通工具。然而,把多张图片嵌入邮件中并不是一件简单的事。本文将带你通过 Python 的 smtplibemail 库来实现发送包含多图片的邮件。我们将通过代码示例,让你轻松掌握这个技巧。

环境准备

在开始之前,你需要确保你的 Python 环境已经安装了以下库:

pip install pillow

实现步骤

1. 导入必要的库

首先,我们需要导入发送邮件所需的库。

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.utils import formataddr, parseaddr

2. 设置邮件内容

在这个步骤中,我们将设置邮件的主题、发件人、收件人等内容。

def create_email(sender_email, receiver_email, subject, body_text, image_paths):
    msg = MIMEMultipart()
    msg['From'] = formataddr(('Sender Name', sender_email))
    msg['To'] = formataddr(('Receiver Name', receiver_email))
    msg['Subject'] = subject

    # 添加邮件正文
    msg.attach(MIMEText(body_text, 'plain'))

    for image_path in image_paths:
        with open(image_path, 'rb') as img_file:
            img = MIMEImage(img_file.read())
            img.add_header('Content-ID', f'<{image_path}>')
            msg.attach(img)

    return msg

3. 发送邮件

以下函数负责连接到邮件服务器并发送邮件。你需要替换以下代码中的邮件服务器信息和你的邮箱凭证。

def send_email(smtp_server, smtp_port, login, password, msg):
    with smtplib.SMTP(smtp_server, smtp_port) as server:
        server.starttls()  # 启动 TLS 加密
        server.login(login, password)
        server.sendmail(msg['From'], msg['To'], msg.as_string())

4. 整合代码

将所有部分整合起来,并运行代码。

if __name__ == '__main__':
    sender_email = 'your_email@example.com'
    receiver_email = 'receiver_email@example.com'
    subject = '多图片邮件示例'
    body_text = '这是包含多张图片的邮件'
    image_paths = ['image1.png', 'image2.jpg', 'image3.gif']

    msg = create_email(sender_email, receiver_email, subject, body_text, image_paths)

    smtp_server = 'smtp.example.com'
    smtp_port = 587
    login = 'your_email@example.com'
    password = 'your_password'

    send_email(smtp_server, smtp_port, login, password, msg)

5. 饼状图展示

以下是一个使用 mermaid 语法制作的饼状图,展示了邮件发送过程中各个步骤的时长分布:

pie
    title 邮件发送步骤时长分布
    "设置邮件内容": 50
    "连接邮件服务器": 20
    "发送邮件": 30

结语

通过上面的步骤,你可以轻松地使用 Python 构建发送多图片的邮件应用。无论是工作汇报还是家庭聚会,都可以通过这种方式,将美好的瞬间分享给更多的人。希望这篇文章能够帮助你在电子邮件使用中更加得心应手!