Python 可以通过使用内置的 smtplib 库来实现自动发送邮件的功能。下面是一个详细的教程和示例代码,演示了如何使用 Python 发送邮件。
1. 准备工作
首先,你需要一个可用的邮箱账号来发送邮件。这里以 Gmail 为例,需要开启“允许低安全性应用访问”选项。
2. 安装依赖库
确保已经安装了 `smtplib` 和 `email` 库。
```bash pip install secure-smtplib pip install email ```
3. 编写代码
下面是一个简单的示例代码,演示了如何使用 Python 发送邮件。
```python import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header # 邮件发送者和接收者 sender = 'your_email@gmail.com' receiver = 'recipient_email@gmail.com' # 邮件内容 msg = MIMEMultipart() msg['From'] = sender msg['To'] = receiver msg['Subject'] = Header('Python 邮件测试', 'utf-8').encode() # 邮件正文 msg.attach(MIMEText('这是一封使用 Python 自动发送的邮件。', 'plain', 'utf-8')) # 连接 SMTP 服务器 smtp_server = 'smtp.gmail.com' smtp_port = 587 username = 'your_email@gmail.com' password = 'your_email_password' server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() # 开启 TLS 加密 server.login(username, password) # 发送邮件 server.sendmail(sender, receiver, msg.as_string()) print('邮件发送成功!') # 关闭连接 server.quit() ```
在上面的示例中,需要将 `your_email@gmail.com` 和 `recipient_email@gmail.com` 替换为实际的发件人和收件人邮箱地址,`your_email_password` 替换为发件人邮箱的密码。
4. 运行代码
运行上面的代码,如果一切正常,你应该能收到一封来自 Python 的测试邮件。
在实际应用中,除了基本的文本邮件,还可以发送包含附件的邮件。下面是一个示例,演示如何发送带有附件的邮件:
```python from email.mime.base import MIMEBase from email import encoders # 创建一个带有附件的邮件 msg = MIMEMultipart() msg['From'] = sender msg['To'] = receiver msg['Subject'] = Header('Python 邮件测试(带附件)', 'utf-8').encode() # 邮件正文 msg.attach(MIMEText('这是一封带有附件的邮件。', 'plain', 'utf-8')) # 添加附件 filename = 'example.txt' attachment = open(filename, 'rb') part = MIMEBase('application', 'octet-stream') part.set_payload(attachment.read()) encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="{}"'.format(filename)) msg.attach(part) # 发送邮件 server.sendmail(sender, receiver, msg.as_string()) print('带有附件的邮件发送成功!') # 关闭连接 server.quit() ```
在这个示例中,`example.txt` 是你要发送的附件文件名,可以根据需要修改。通过这种方式,你可以发送包含附件的邮件,提供更多样化的邮件内容。
发送带有附件的邮件实际上是在构建邮件内容时添加了附件部分。在构建邮件时,我们使用了 `MIMEMultipart` 类来创建一个多部分邮件,其中包含了邮件的文本部分和附件部分。
附件部分的内容通过创建一个 `MIMEBase` 对象,并设置其类型和编码方式。然后,将附件内容读取并编码成 base64 格式,再添加到 `MIMEBase` 对象中。最后,通过设置附件的头部信息,指定附件的文件名和格式等信息。
当邮件发送时,邮件服务器会根据构建的邮件内容,将邮件发送到指定的收件人邮箱。接收邮件的邮箱客户端会根据邮件的内容格式进行解析,从而正确显示邮件的文本内容和附件信息。