这是HTML格式的邮件正文。
""" msg = MIMEText(html_content, 'html', 'utf-8') msg['Subject'] = 'HTML邮件示例' # 其他设置与发送过程相同 ``` #### 发送带附件的邮件 要发送带附件的邮件,你需要使用`MIMEMultipart`类来组合邮件的正文和附件。 ```python from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders # 创建一个多部分消息 msg = MIMEMultipart() msg['Subject'] = '带附件的邮件' msg['From'] = 'your_email@gmail.com' msg['To'] = 'recipient_email@example.com' # 附加文件 filename = 'example.txt' with open(filename, '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= {filename}") msg.attach(part) # 添加邮件正文(如果需要) msg.attach(MIMEText("这是邮件正文,有一个附件。", 'plain', 'utf-8')) # 发送邮件(过程与前面相同) ``` ### 总结 在Python中使用SMTP发送邮件是一个直接且强大的功能,适用于多种自动化场景。通过`smtplib`和`email`模块,你可以轻松构建包含文本、HTML和附件的邮件,并将其发送到指定的收件人。记得在处理敏感信息(如邮箱密码)时采取安全措施,并适当处理可能出现的异常,以确保邮件发送过程的稳定性和可靠性。希望这篇指南能帮助你在你的项目中成功实现邮件发送功能,并在码小课网站上分享你的学习成果和实践经验。当前位置: 技术文章>> 如何在 Python 中通过 SMTP 发送邮件?
文章标题:如何在 Python 中通过 SMTP 发送邮件?
在Python中通过SMTP(简单邮件传输协议)发送邮件是一项常见且实用的技能,对于自动化报告、通知用户或进行日常通信来说非常有用。下面,我将详细介绍如何在Python中设置和使用SMTP来发送邮件,包括如何配置SMTP服务器、构建邮件内容以及处理可能出现的异常。
### 准备工作
在开始编写代码之前,请确保你拥有以下准备:
1. **一个SMTP服务器**:大多数电子邮件服务提供商(如Gmail、Outlook、Yahoo等)都提供SMTP服务。你需要知道服务器的地址、端口号以及是否需要SSL/TLS加密。
2. **邮箱账号及密码**:用于发送邮件的邮箱账号及其密码(或应用专用密码,如果你使用的是Gmail等提供这种选项的服务)。
3. **Python环境**:确保你的计算机上已安装Python。同时,你将需要安装`email`和`smtplib`这两个Python标准库,但幸运的是,它们通常都随Python一起安装。
### 使用`smtplib`和`email`模块发送邮件
在Python中,`smtplib`模块提供了SMTP协议客户端的接口,而`email`模块则用于构建邮件消息。下面是一个使用Gmail SMTP服务器发送邮件的示例步骤。
#### 1. 导入必要的模块
首先,你需要从`email.mime.text`和`smtplib`导入相应的类和函数。
```python
from email.mime.text import MIMEText
from smtplib import SMTP_SSL, SMTPException
```
#### 2. 创建邮件内容
使用`MIMEText`类来创建邮件内容。这个类可以处理纯文本或HTML格式的邮件内容。
```python
# 设置邮件内容
msg = MIMEText("这是邮件正文内容,可以是纯文本或HTML。", 'plain', 'utf-8')
msg['Subject'] = '这是邮件主题'
msg['From'] = 'your_email@gmail.com' # 发送者邮箱
msg['To'] = 'recipient_email@example.com' # 接收者邮箱
```
注意:这里我们使用了`plain`作为第二个参数,表示邮件正文是纯文本格式。如果你需要发送HTML格式的邮件,可以将`plain`改为`html`。
#### 3. 连接到SMTP服务器
使用`SMTP_SSL`(对于需要SSL/TLS的服务器)或`SMTP`(对于不需要SSL/TLS的服务器)来创建SMTP服务器的连接。以Gmail为例,使用`SMTP_SSL`并指定服务器地址和端口。
```python
# Gmail SMTP服务器配置
smtp_server = 'smtp.gmail.com'
smtp_port = 465
# 登录信息
email = 'your_email@gmail.com'
password = 'your_password' # 注意:实际应用中应避免硬编码密码
try:
with SMTP_SSL(smtp_server, smtp_port) as server:
server.login(email, password)
server.sendmail(email, [msg['To']], msg.as_string())
print("邮件发送成功!")
except SMTPException as e:
print(f"邮件发送失败:{e}")
```
注意:为了安全起见,不应在代码中直接写入你的邮箱密码。考虑使用环境变量或加密的配置文件来管理敏感信息。
#### 4. 处理异常
在发送邮件的过程中,可能会遇到各种网络问题或认证失败等问题。通过捕获`SMTPException`异常,你可以优雅地处理这些问题,并向用户反馈错误信息。
#### 5. 使用应用专用密码(针对Gmail等)
如果你的Gmail账号启用了两步验证,你将需要为你的应用(在这种情况下是你的Python脚本)生成一个应用专用密码。在Gmail的账户安全设置中,你可以找到生成应用专用密码的选项。使用这个密码而不是你的普通密码来登录SMTP服务器。
### 进阶使用
#### 发送HTML邮件
如果你想要发送HTML格式的邮件,只需在创建`MIMEText`对象时将`_subtype`参数设置为`html`,并传递HTML内容作为第一个参数。
```python
# HTML邮件内容
html_content = """