Python使用yagmail库发送QQ邮箱的完整指南

半杯拿铁
半杯拿铁
发布时间:2026-10-15| 4人浏览过
原创

本文详细介绍如何在Python中利用yagmail库实现邮件发送功能。内容涵盖安装依赖、获取QQ邮箱授权码、配置SMTP服务器,以及发送纯文本、多收件人和带附件邮件的具体代码示例。此外,文章提供了将发送逻辑封装为函数的方法,便于在实际项目中复用。

安装yagmail库

在开始使用yagmail之前,首先需要确保环境中已安装该库。

可以通过以下命令从国内镜像源安装yagmail: pip install yagmail -i https://pypi.douban.com/simple

获取QQ邮箱授权码

若需通过QQ邮箱发送邮件,必须使用授权码而非邮箱登录密码。因此,第一步是登录QQ邮箱,进入“设置”中的“账户”选项卡,开启SMTP服务并生成授权码。

具体路径为:邮箱设置 -> 账户 -> 开启SMTP服务。

yagmail模块极大简化了邮件发送流程,仅需少量代码即可完成。

基础邮件发送实现


# -*- encoding: utf-8 -*-

import yagmail

def E_mali_jj(fr,key,etype,text,to,attachments):
    '''
    :param fr: 发送邮箱
    :param key: 授权码
    :param etype: 邮件类型
    :param text: 文本
    :param to: 接受邮箱
    :param attachments: 附件文件地址,空则填''
    :return:
    '''
   # 链接邮箱服务器
    yag=yagmail.SMTP(user=fr,password=key,host=etype)
    # 邮箱正文
    contents=[text]
    # 发送邮件
    yag.send(to=to,subject='邮件标题',contents=contents,
             attachments=attachments)   #subject 标题
    yag.close()
    print("邮件发送成功")

if __name__ == '__main__':
    E_mali_jj("123456@qq.com",
              "gwheybuaamrqbihh",
              'smtp.qq.com',
              "邮件正文内容",
              "123456@qq.com",
              "E:\\proto_code\\Roshan-01-microscript-proto_test-master-src\\src\\report\\report.html")

当需要向多个收件人发送邮件时,只需将目标邮箱地址放入一个列表中即可。

发送多收件人邮件


# 发送邮件
yag.send(to = ['123456@qq.com','678910@qq.com', '10111213@qq.com'], subject='subject', contents = contents, attachments="")

除了文本内容,yagmail也支持发送带附件的邮件。

发送带附件邮件


# -*- coding:utf-8 -*-
import yagmail

yag = yagmail.SMTP( user="157540957@qq.com",
                    password="kayzilfyziulbhbb1",
                    host='smtp.qq.com')
"""
user:      发送的邮箱
password: 授权码
"""
# 邮箱正文
contents = ['测试发送邮件']
# 附件
attachments = "D:\\code\\0906\\api_test009\\report\\report.html"
# 发送邮件
try:
    yag.send(to = '3437871062@qq.com',
             subject='subject',
             contents = contents,
             attachments=attachments)

except Exception as e :
    print("Error: 抱歉!发送邮件失败。", e)
"""
to : 接收者
subject : 邮件主题
contents: 正文
attachments: 附件
"""

yag.close()

为了在项目中更好地复用,可以将邮件发送逻辑封装成一个独立的函数。

封装邮件发送函数


# -*- coding:utf-8 -*-
import yagmail

def send(user, password, receiver):
    yag = yagmail.SMTP( user=user,
                        password=password,
                        host='smtp.qq.com')
    """
    user:      发送的邮箱
    password: 授权码
    """
    # 邮箱正文
    contents = ['测试发送邮件']
    # 附件
    attachments = "D:\\code\\0906\\api_test009\\report\\report.html"
    # 发送邮件
    try:
        yag.send(to=receiver,
                 subject='subject',
                 contents = contents,
                 attachments=attachments)

    except Exception as e :
        print("Error: 抱歉!发送邮件失败。", e)
    """
    to : 接收者
    subject : 邮件主题
    contents: 正文
    attachments: 附件
    """

    yag.close()

if __name__ == '__main__':
    send("123456@qq.com", "kayzilfyziulbhbb1", "45678910@qq.com")

至此,关于Python使用yagmail发送邮件的介绍已完成。如需了解更多相关内容,建议搜索本站历史文章或继续阅读后续教程,感谢支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。