Python发送邮件附件教程

概述

本教程将教会你如何使用Python发送带附件的邮件。我们将使用Python的smtplib库进行邮件发送,并使用email库来构建邮件。在教程中,我将逐步指导你完成每一步,并提供相应的代码和注释说明。

流程图

flowchart TD
    A[开始] --> B[连接到SMTP服务器]
    B --> C[登录邮箱]
    C --> D[构建邮件]
    D --> E[添加附件]
    E --> F[发送邮件]
    F --> G[关闭连接]
    G --> H[结束]

步骤说明

以下是整个发送邮件附件的步骤,每一步都有对应的代码和注释。

1. 连接到SMTP服务器

第一步是连接到SMTP服务器,这个服务器将负责发送邮件。通常,我们会使用SMTP协议来发送邮件。以下代码将使用smtplib库连接到SMTP服务器:

import smtplib

# SMTP服务器地址
smtp_server = "smtp.example.com"

# 连接到SMTP服务器
server = smtplib.SMTP(smtp_server, 587)

2. 登录邮箱

在连接到SMTP服务器后,我们需要登录到发送邮件的邮箱。以下代码将使用你的邮箱地址和密码进行登录:

# 邮箱登录凭据
email = "your_email@example.com"
password = "your_password"

# 登录邮箱
server.login(email, password)

3. 构建邮件

在登录邮箱后,我们需要构建要发送的邮件。以下代码将使用email库来构建邮件对象,并设置邮件的发送者、接收者、主题和正文:

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 邮件发送者、接收者、主题和正文
sender = email
receiver = "recipient@example.com"
subject = "Python邮件发送附件示例"
body = "这是一封带附件的邮件,附件是一张图片。"

# 创建邮件对象
msg = MIMEMultipart()
msg["From"] = sender
msg["To"] = receiver
msg["Subject"] = subject

# 添加正文
msg.attach(MIMEText(body, "plain"))

4. 添加附件

在邮件中添加附件时,我们需要指定附件的文件路径和文件名。以下代码将添加名为"example.jpg"的图片作为附件:

from email.mime.base import MIMEBase
from email import encoders

# 添加附件
filename = "example.jpg"
attachment = open(filename, "rb")

# 创建附件对象
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
encoders.encode_base64(part)

# 设置附件的文件名
part.add_header("Content-Disposition", f"attachment; filename= {filename}")

# 将附件添加到邮件对象
msg.attach(part)

# 关闭附件文件
attachment.close()

5. 发送邮件

在构建完邮件后,我们可以使用SMTP服务器发送邮件。以下代码将发送构建好的邮件:

# 发送邮件
server.sendmail(sender, receiver, msg.as_string())

6. 关闭连接

最后一步是关闭与SMTP服务器的连接。以下代码将关闭连接:

# 关闭连接
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服务器地址
smtp_server = "smtp.example.com"

# 邮箱登录凭据
email = "your_email@example.com"
password = "your_password"

# 邮件发送者、接收者、主题和正文
sender = email
receiver = "recipient@example.com"
subject = "Python邮件发送附件示例"
body = "这是一封带附件的邮件,附件是一张图片。"

# 连接到SMTP服务器
server = smtplib.SMTP(smtp_server, 587)

# 登录邮箱
server.login(email, password)

# 创建邮件对象
msg = MIMEMultipart()
msg["From"] = sender
msg["To"] = receiver
msg["Subject"] = subject

# 添加正文
msg.attach(MIMEText(body, "plain"))

# 添加附件
filename = "example.jpg"
attachment = open