Python通过email和smtplib模块发送简单邮件

1. 简介

邮件是一种日常生活中常用的通信方式。Python 提供了方便的模块可以用来发送邮件,其中常用的是 email 和 smtplib 模块。本文将介绍如何使用这两个模块来发送简单的邮件。

2. 安装依赖模块

在开始之前,需要确保你的 Python 环境中已经安装了 email 和 smtplib 模块。

如果没有安装,可以使用以下命令安装:

pip install email smtplib

3. 创建邮件消息

3.1 构建邮件内容

要发送一封邮件,首先我们需要构建邮件的内容。使用 email 模块中的 Message 类来创建邮件消息对象。

下面是一个例子:

from email.message import EmailMessage

# 创建邮件消息对象

msg = EmailMessage()

在这个例子中,我们创建了一个名为 msg 的邮件消息对象。

3.2 设置邮件内容

邮件消息对象包含了邮件的各种信息,例如发件人、收件人、主题、正文等。

我们可以使用邮件消息对象的相应属性来设置这些信息。

例如,要设置发件人和收件人可以使用以下代码:

msg['From'] = 'sender@example.com'

msg['To'] = 'recipient@example.com'

3.3 添加邮件正文

要添加邮件正文,可以使用邮件消息对象的 set_content() 方法。

msg.set_content('这是一封测试邮件。')

在这个例子中,我们将邮件的正文设置为 "这是一封测试邮件。"。

3.4 添加附件

如果需要添加附件,可以使用邮件消息对象的 add_attachment() 方法。

from email.mime.text import MIMEText

# 创建附件对象

attachment = MIMEText('这是一个附件。')

attachment.add_header('Content-Disposition', 'attachment', filename='attachment.txt')

# 将附件添加到邮件消息对象中

msg.add_attachment(attachment)

在这个例子中,我们创建了一个名为 attachment 的附件对象,并将其添加到邮件消息对象中。

4. 发送邮件

构建好邮件消息对象后,就可以使用 smtplib 模块来发送邮件。

下面是一个发送邮件的例子:

import smtplib

# 邮件服务器的地址和端口

smtp_server = 'smtp.example.com'

smtp_port = 587

# 发件人和收件人的邮箱地址

sender = 'sender@example.com'

recipient = 'recipient@example.com'

# 登录邮件服务器

smtp_obj = smtplib.SMTP(smtp_server, smtp_port)

smtp_obj.starttls()

smtp_obj.login(sender, 'password')

# 发送邮件

smtp_obj.send_message(msg)

# 退出登录

smtp_obj.quit()

在这个例子中,我们首先创建了一个名为 smtp_obj 的 SMTP 对象,并使用 starttls() 方法启用了安全连接。

然后使用 login() 方法登录邮件服务器,其中 sender 为发件人的邮箱地址,'password' 为发件人的登录密码。

最后使用 send_message() 方法发送邮件消息,并使用 quit() 方法退出登录。

5. 示例代码

from email.message import EmailMessage

import smtplib

# 创建邮件消息对象

msg = EmailMessage()

# 设置发件人和收件人

msg['From'] = 'sender@example.com'

msg['To'] = 'recipient@example.com'

# 添加邮件正文

msg.set_content('这是一封测试邮件。')

# 创建附件对象

attachment = MIMEText('这是一个附件。')

attachment.add_header('Content-Disposition', 'attachment', filename='attachment.txt')

# 将附件添加到邮件消息对象中

msg.add_attachment(attachment)

# 邮件服务器的地址和端口

smtp_server = 'smtp.example.com'

smtp_port = 587

# 发件人和收件人的邮箱地址

sender = 'sender@example.com'

recipient = 'recipient@example.com'

# 登录邮件服务器

smtp_obj = smtplib.SMTP(smtp_server, smtp_port)

smtp_obj.starttls()

smtp_obj.login(sender, 'password')

# 发送邮件

smtp_obj.send_message(msg)

# 退出登录

smtp_obj.quit()

以上代码是一个完整的示例,你可以根据自己的需求进行修改。

6. 总结

本文介绍了如何使用 Python 的 email 和 smtplib 模块来发送简单的邮件。

首先,我们使用 EmailMessage 类创建邮件消息对象,然后设置邮件内容,包括发件人、收件人、主题、正文和附件。

接下来,我们使用 SMTP 对象来连接邮件服务器,登录邮箱,并使用 send_message() 方法发送邮件。

最后,我们使用 quit() 方法退出登录。

希望本文能够帮助你学习和使用 Python 发送邮件功能。

后端开发标签