python实现发送邮件功能
需积分: 0 120 浏览量
更新于2020-09-21
收藏 187KB PDF 举报
在Python编程中,发送电子邮件是一项常见的任务,可以用于自动化通知、报告或数据传输。本教程将详细介绍如何使用Python的smtplib和MIMEText模块来实现这个功能。
smtplib是Python标准库中的一个模块,它提供了与简单邮件传输协议(SMTP)交互的功能,允许程序发送电子邮件。MIMEText模块则用于创建符合MIME标准的邮件消息,MIME是一种扩展的电子邮件标准,用于定义非ASCII字符集和其他类型的数据如何被编码为邮件。
确保已经安装了这两个模块,因为它们是Python的标准库,通常在安装Python时就已经包含。
发送邮件的基本步骤如下:
1. 导入所需的模块:
```python
import smtplib
from email.mime.text import MIMEText
```
2. 创建邮件内容:
使用MIMEText类创建邮件主体,设置邮件的主题、发件人和收件人。
```python
msg = MIMEText(content)
msg['Subject'] = title
msg['From'] = username
msg['To'] = recv
```
3. 连接SMTP服务器:
根据邮件服务商的不同,需要设置不同的SMTP服务器地址和端口号。例如,对于163邮箱,SMTP服务器是'smtp.163.com',默认端口是25;对于QQ邮箱,SMTP服务器是'smtp.qq.com',默认端口是456。
4. 登录邮箱并发送邮件:
使用smtplib的SMTP或SMTP_SSL类连接SMTP服务器,然后使用login()方法登录邮箱(使用授权码而非登录密码),最后使用sendmail()方法发送邮件。
```python
smtp = smtplib.SMTP(mail_host, port)
smtp.login(username, passwd)
smtp.sendmail(username, recv, msg.as_string())
smtp.quit()
```
在实际应用中,需要注意以下几点:
- **授权码**:许多邮箱服务提供商(如163邮箱和QQ邮箱)要求使用授权码而不是常规的登录密码进行SMTP身份验证。授权码可以在邮箱的设置中生成,以提高安全性。
- **错误处理**:在发送邮件时,应考虑可能遇到的网络问题或认证错误,通过try-except语句捕获异常并进行适当处理。
- **多接收者**:如果邮件需要发送给多个收件人,可以在`msg['To']`字段中用逗号分隔他们的电子邮件地址。
- **SSL/TLS安全连接**:某些邮件服务可能要求使用SSL或TLS加密连接,如QQ邮箱使用的是SMTP_SSL。这可以通过在SMTP类的初始化时指定`use_ssl=True`或`SMTP_SSL`类来实现。
下面是一个使用163邮箱发送邮件的完整示例:
```python
def send_mail_163(username, passwd, recv, title, content):
msg = MIMEText(content)
msg['Subject'] = title
msg['From'] = username
msg['To'] = recv
smtp = smtplib.SMTP('smtp.163.com', 25)
smtp.login(username, passwd)
smtp.sendmail(username, recv, msg.as_string())
smtp.quit()
email_user = 'your_163_email@example.com'
email_pwd = 'your_163_auth_code'
maillist = 'recipient_email@example.com'
title = 'Test Email Title'
content = 'This is the content of your email.'
send_mail_163(email_user, email_pwd, maillist, title, content)
```
同样,以下是使用QQ邮箱发送邮件的示例:
```python
def send_mail_qq(username, passwd, recv, title, content):
msg = MIMEText(content)
msg['Subject'] = title
msg['From'] = username
msg['To'] = recv
smtp = smtplib.SMTP_SSL('smtp.qq.com', 465)
smtp.login(username, passwd)
smtp.sendmail(username, recv, msg.as_string())
smtp.quit()
email_user = 'your_qq_email@example.com'
email_pwd = 'your_qq_auth_code'
maillist = 'recipient_email@example.com'
title = 'Test Email Title'
content = 'This is the content of your email.'
send_mail_qq(email_user, email_pwd, maillist, title, content)
```
通过以上代码,你可以理解如何使用Python的smtplib和MIMEText模块来发送邮件。这个功能在自动化脚本、Web应用或其他需要发送通知的场景中非常实用。在实际应用中,你可能还需要考虑添加附件、设置HTML格式的邮件内容、处理回复和抄送等功能,这些都可以通过扩展上述代码来实现。
weixin_38628362
- 粉丝: 6
- 资源: 897
最新资源
- 不坑盒子Word v2024.1218免费Office插件.mp4
- gec6818 交叉编译openssl
- 菜鸟裹裹周五抽5或6折寄件券.mp4
- 基于Android Studio开发的音乐播放器APP源码+报告(高分Android音乐播放器项目)
- 产后速效瘦身(13集)瑜伽健身各种训练课.mp4
- 茶百道每天抽大杯奶茶免单券.mp4
- 车来了v4.59.0高级版 精准实时公交地铁神器.mp4
- 待办事项记录app 让你的生活更有效率.mp4
- 单品主播进阶课付费培训46节完整+话术本.mp4
- 得物订单截图模拟器 本应用仅供娱乐.mp4
- 滴滴打车集卡片兑换库迪咖啡.mp4
- 电池大师Battery Guru v2.3.13 for解锁付费版.mp4
- 电脑蹭网防护神器一键断网.mp4
- 电脑组装、维护、维修 全能一本通.mp4
- 电脑维修技术大全,有台式也有笔记本的教程.mp4
- 电信口令綐0.88~100亓话费6个口令.mp4