0

0

Python如何发送邮件_Python发送邮件实现方法一览

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-08-26 15:31:01

|

545人浏览过

|

来源于php中文网

原创

使用smtplib和email库可实现Python邮件发送,先导入相关库,设置发件人、收件人、主题及内容,通过SMTP服务器登录并发送邮件,注意处理异常;发送HTML邮件需将MIMEText类型设为'html';带附件邮件需用MIMEMultipart和MIMEBase构建;也可用yagmail简化流程。

python如何发送邮件_python发送邮件实现方法一览

Python发送邮件,简单来说,就是利用Python内置的smtplib库,或者更高级的email库,构建邮件内容,然后通过SMTP协议发送出去。

SMTP,简单邮件传输协议,是互联网上用于电子邮件传输的标准协议。你需要一个SMTP服务器,通常是你的邮箱服务提供商提供的。

解决方案

  1. 选择合适的库:

    • smtplib
      : Python标准库,提供了SMTP客户端类的实现,可以用来连接SMTP服务器,发送邮件。比较底层,需要手动构建邮件内容。
    • email
      : Python标准库,用于构建和解析电子邮件消息。配合
      smtplib
      使用,可以更方便地创建复杂的邮件内容,如HTML格式、附件等。
    • yagmail
      : 一个更高级的库,简化了邮件发送过程,代码更简洁。
  2. 构建邮件内容:

    立即学习Python免费学习笔记(深入)”;

    使用

    email
    库来构建邮件内容。可以设置发件人、收件人、主题、正文等。正文可以是纯文本,也可以是HTML格式。

  3. 连接SMTP服务器并发送邮件:

    使用

    smtplib
    库连接SMTP服务器。你需要提供SMTP服务器的地址、端口号,以及发件人的邮箱账号和密码(有些邮箱需要开启SMTP服务并获取授权码)。

  4. 处理异常:

    发送邮件过程中可能会出现各种异常,如连接失败、认证失败、发送失败等。需要使用

    try...except
    语句来捕获并处理这些异常。

下面是一个使用

smtplib
email
库发送简单邮件的例子:

零沫AI工具导航
零沫AI工具导航

零沫AI工具导航-AI导航新标杆,探索全球实用AI工具

下载
import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 发件人邮箱账号
sender = 'your_email@example.com'
# 发件人邮箱密码(或者授权码)
password = 'your_password'
# 收件人邮箱账号
receivers = ['recipient_email@example.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

# 邮件内容
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("发件人", 'utf-8')
message['To'] =  Header("收件人", 'utf-8')

subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')

try:
    smtpObj = smtplib.SMTP('smtp.example.com', 25)  # 25 为 SMTP 端口号,根据你的邮箱服务提供商修改
    smtpObj.login(sender, password)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件", e)
finally:
    if 'smtpObj' in locals():
        smtpObj.quit()

注意:

smtp.example.com
25
只是示例,你需要替换成你实际使用的邮箱服务商提供的SMTP服务器地址和端口号。 密码也需要替换成你自己的密码或者授权码。

如何解决邮件发送失败的问题?

邮件发送失败可能有很多原因。最常见的是:

  • SMTP服务器地址或端口号错误: 仔细检查你的邮箱服务提供商提供的SMTP服务器地址和端口号是否正确。
  • 邮箱账号或密码错误: 确认你的邮箱账号和密码是否正确。如果是使用授权码,确保授权码没有过期。
  • 未开启SMTP服务: 某些邮箱默认关闭了SMTP服务,需要在邮箱设置中手动开启。
  • 网络问题: 检查你的网络连接是否正常。
  • 被当作垃圾邮件: 邮件内容可能被邮件服务器认为是垃圾邮件,导致发送失败。可以尝试修改邮件内容,避免包含敏感词汇或链接。

另外,某些云服务器可能会限制25端口的访问,需要联系服务商开通。

如何发送HTML格式的邮件?

如果你想发送HTML格式的邮件,只需要将

MIMEText
的第一个参数设置为HTML代码,并将第二个参数设置为
'html'
即可。

from email.mime.text import MIMEText

html_content = """
<html>
  <head></head>
  <body>
    <p>你好!<br>
       这是一封HTML格式的邮件。<br>
       请点击 <a href="https://www.example.com">这里</a> 查看更多信息。
    </p>
  </body>
</html>
"""

message = MIMEText(html_content, 'html', 'utf-8')

如何发送带附件的邮件?

发送带附件的邮件需要使用

email.mime.multipart.MIMEMultipart
email.mime.base.MIMEBase

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

# 创建一个带附件的邮件对象
message = MIMEMultipart()

# 添加邮件头
message['From'] = Header("发件人", 'utf-8')
message['To'] =  Header("收件人", 'utf-8')
message['Subject'] = Header("带附件的邮件", 'utf-8')

# 添加邮件正文
message.attach(MIMEText('邮件正文内容...', 'plain', 'utf-8'))

# 添加附件
filename = '附件.txt' # 附件文件名
filepath = '附件.txt' # 附件路径

with open(filepath, 'rb') as f:
    # 创建一个MIMEBase对象,用于表示附件
    att = MIMEBase('application', 'octet-stream')
    # 读取附件内容
    att.set_payload(f.read())
    # 对附件进行base64编码
    encoders.encode_base64(att)
    # 设置附件的头部信息
    att.add_header('Content-Disposition', 'attachment', filename=filename)
    # 将附件添加到邮件中
    message.attach(att)


# 发送邮件
try:
    smtpObj = smtplib.SMTP('smtp.example.com', 25)
    smtpObj.login(sender, password)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件", e)
finally:
    if 'smtpObj' in locals():
        smtpObj.quit()

确保

附件.txt
文件存在,并且
filename
filepath
变量指向正确的文件名和路径。
application/octet-stream
是一种通用的 MIME 类型,用于表示任意二进制数据。 如果你知道附件的具体类型,可以使用更具体的 MIME 类型,例如
image/jpeg
application/pdf
等。

使用yagmail简化邮件发送

yagmail
是一个更简洁易用的Python库,可以简化邮件发送过程。

首先,你需要安装

yagmail
:

pip install yagmail

然后,可以使用以下代码发送邮件:

import yagmail

# 连接SMTP服务器
yag = yagmail.SMTP(user='your_email@example.com', password='your_password', host='smtp.example.com')

# 发送邮件
yag.send(to='recipient_email@example.com', subject='yagmail 邮件测试', contents='使用 yagmail 发送的邮件')

print("邮件发送成功")

yagmail
会自动处理连接、认证和发送过程,代码更简洁易懂。 你还可以使用
yagmail
发送HTML格式的邮件和带附件的邮件。 具体的用法可以参考
yagmail
的官方文档。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
轻量应用服务器和云服务器的区别
轻量应用服务器和云服务器的区别

随着科技的快速发展,越来越多的企业和个人开始依赖于服务器来托管其应用程序和网站。然而,在选择服务器时,很多人对轻量应用服务器和云服务器之间的差异不够了解。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

111

2023.07.27

注册云服务器的作用
注册云服务器的作用

注册云服务器的作用:1、可放置公司网站、电子商务平台、APP和其他应用程序等;2、使用云服务器来存储和共享数据,不仅高度安全,而且可以随时随地在线访问;3、当内存不够时,站长可自行增加,使资源充沛,保障了页面加载速度和优质的用户体验。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

247

2024.03.13

云服务器的全部用途
云服务器的全部用途

云服务器的用途广泛,包括网站托管、应用程序部署、数据存储和备份、虚拟化和容器化、大数据处理、游戏服务器以及开发测试环境等。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

467

2024.03.21

云服务器价格性价比高的服务商介绍
云服务器价格性价比高的服务商介绍

性价比较高的云服务器服务商,包括阿里云、腾讯云、亚马逊AWS和华为云。这些服务商提供丰富的产品线、亲民的价格、完善的生态体系和技术支持。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

354

2024.03.21

云服务器的使用教程
云服务器的使用教程

使用云服务器需要遵循以下步骤:选择可靠的云服务提供商,注册账号并购买所需实例,配置安全组和网络,连接到服务器,配置服务器环境,定期管理和监控服务器,优化性能和成本。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

344

2024.03.21

云服务器作用介绍
云服务器作用介绍

云服务器作为云计算的关键组成部分,广泛应用于弹性计算、数据存储处理、应用程序部署托管、灾备容灾、开发测试环境、虚拟化容器化等领域。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

400

2024.03.21

云服务器是什么
云服务器是什么

云服务器是一种在云计算环境中提供的虚拟服务器,它具有弹性、可扩展性和按需付费等特点。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

290

2024.06.21

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

37

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

136

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号