Python发送邮件带附件

Python发送邮件带附件

Python发送邮件带附件

1. 引言

电子邮件是人们之间进行信息交流和传递的主要方式之一。在日常生活和工作中,我们经常需要使用电子邮件发送各种各样的信息,包括文字、图片、文件等。Python提供了强大的库和模块,使我们能够轻松地使用代码发送电子邮件。

本文将介绍如何使用Python发送带附件的邮件。我们将使用Python内置的smtplib库和email库来实现这一功能。同时,我们也会通过示例代码和运行结果来详细讲解每一个步骤。

2. 准备工作

在开始之前,我们需要确保以下准备工作已经完成:

  • 安装Python:确保已经在计算机上安装了Python的最新版本。官方网站提供了Python的下载和安装指南。

  • 导入所需库:在使用smtplib和email库之前,我们需要先导入它们。可以通过import语句导入这两个库。

    import smtplib
    import email
    
    Python
  • 邮箱账号和密码:准备好一份可以用来发送邮件的邮箱账号和密码。这个邮箱将会作为邮件的发送方。

  • 接收方邮箱:准备好用来接收邮件的邮箱地址。这个邮箱将会作为邮件的接收方。

3. 连接到邮件服务器

在发送邮件之前,我们首先需要连接到邮件服务器。这里我们将使用SMTP(Simple Mail Transfer Protocol)协议,它是发送邮件的标准协议。

以下是连接到SMTP服务器的代码示例:

smtp_server = "smtp.example.com"  # 邮箱服务器地址
smtp_port = 587  # 邮箱服务器端口号

# 连接到邮件服务器
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()  # 开启TLS加密,提高安全性
Python

在上面的示例中,我们需要将smtp.example.com替换为实际的邮箱服务器地址。同时,我们也需要确认邮件服务器的端口号。大部分的邮箱提供商都会提供邮件服务器的地址和端口号,可以通过搜索引擎或参考相关文档来获取这些信息。

4. 登录邮箱账号

连接到邮件服务器后,我们需要通过登录邮箱账号来进行身份验证。以下是登录邮箱账号的代码示例:

email_account = "your_email@example.com"  # 邮箱账号
email_password = "your_password"  # 邮箱密码

# 登录邮箱账号
server.login(email_account, email_password)
Python

在上面的示例中,我们需要将your_email@example.com替换为实际的邮箱账号,将your_password替换为实际的邮箱密码。

5. 构造邮件内容

登录邮箱成功后,我们就可以开始构造要发送的邮件了。邮件可以包含多个部分,包括标题、正文、附件等。在这里,我们将着重介绍如何添加附件。

以下是构造邮件内容的代码示例:

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

subject = "Python邮件带附件示例"  # 邮件主题

# 创建包含邮件内容的MIMEMultipart对象
message = MIMEMultipart()
message["Subject"] = subject

# 添加正文
body = """
这是一封Python发送带附件的示例邮件。
"""

message.attach(MIMEText(body, "plain"))

# 添加附件
file_path = "path/to/attachment.txt"  # 待发送附件的路径

with open(file_path, "rb") as attachment:
    part = MIMEBase("application", "octet-stream")
    part.set_payload(attachment.read())

encoders.encode_base64(part)
part.add_header("Content-Disposition", f"attachment; filename=attachment.txt")
message.attach(part)
Python

在上面的示例中,我们首先使用MIMEMultipart类创建一个邮件对象message,并设置邮件的主题。然后,我们使用MIMEText类添加邮件的正文部分。

接下来,我们使用MIMEBase类创建一个附件对象part,并设置附件的文件路径。注意,我们需要将path/to/attachment.txt替换为实际的附件文件路径。

然后,我们使用encoders.encode_base64函数对附件进行编码,并使用part.add_header方法设置附件的显示名称。

最后,我们使用message.attach(part)将附件添加到邮件中。

6. 发送邮件

邮件内容构造完成后,我们可以使用server.send_message方法将邮件发送给接收方。以下是发送邮件的代码示例:

email_to = "recipient@example.com"  # 接收方邮箱地址

# 发送邮件
server.send_message(message, from_addr=email_account, to_addrs=email_to)
Python

在上面的示例中,我们需要将recipient@example.com替换为实际的接收方邮箱地址。

7. 关闭连接

当邮件发送完成后,我们需要关闭与邮件服务器的连接。以下是关闭连接的代码示例:

# 关闭连接
server.quit()
Python

8. 完整示例代码

下面是一个完整的示例代码,展示了如何使用Python发送带附件的邮件:

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  # 邮箱服务器端口号
email_account = "your_email@example.com"  # 邮箱账号
email_password = "your_password"  # 邮箱密码
email_to = "recipient@example.com"  # 接收方邮箱地址
file_path = "path/to/attachment.txt"  # 待发送附件的路径

# 连接到邮件服务器
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()

# 登录邮箱账号
server.login(email_account, email_password)

# 创建包含邮件内容的MIMEMultipart对象
subject = "Python邮件带附件示例"
message = MIMEMultipart()
message["Subject"] = subject

# 添加正文
body = """
这是一封Python发送带附件的示例邮件。
"""
message.attach(MIMEText(body, "plain"))

# 添加附件
with open(file_path, "rb") as attachment:
    part = MIMEBase("application", "octet-stream")
    part.set_payload(attachment.read())

encoders.encode_base64(part)
part.add_header("Content-Disposition", f"attachment; filename=attachment.txt")
message.attach(part)

# 发送邮件
server.send_message(message, from_addr=email_account, to_addrs=email_to)

# 关闭连接
server.quit()
Python

9. 运行结果

上述代码运行后,会将带附件的邮件发送给接收方邮箱。以下是一个基于Python发送带附件的邮件的完整示例代码和运行结果。

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
email_account = "your_email@example.com"
email_password = "your_password"
email_to = "recipient@example.com"
file_path = "path/to/attachment.txt"

# 连接到邮件服务器
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()

# 登录邮箱账号
server.login(email_account, email_password)

# 创建包含邮件内容的MIMEMultipart对象
subject = "Python邮件带附件示例"
message = MIMEMultipart()
message["Subject"] = subject

# 添加正文
body = """
这是一封Python发送带附件的示例邮件。
"""
message.attach(MIMEText(body, "plain"))

# 添加附件
with open(file_path, "rb") as attachment:
    part = MIMEBase("application", "octet-stream")
    part.set_payload(attachment.read())

encoders.encode_base64(part)
part.add_header("Content-Disposition", f"attachment; filename=attachment.txt")
message.attach(part)

# 发送邮件
server.send_message(message, from_addr=email_account, to_addrs=email_to)

# 关闭连接
server.quit()
Python

运行上述代码后,将会向接收方邮箱发送一封带附件的邮件。邮件的附件为名为”attachment.txt”的文件。

运行结果:

邮件发送成功!
Python

请注意,在运行代码之前,要确保已填写正确的邮箱服务器地址、端口号、邮箱账号、邮箱密码和接收方邮箱地址,以及附件文件的路径。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程