全功能邮件管理助手

Polar Sponsor
爱发电 赞助
.NET 9.0

全功能邮件管理助手,支持发送(HTML样式+附件+内嵌图片)、接收、搜索、查看、删除、标记、移动邮件。覆盖市面上所有主流邮箱平台(163、QQ、126、Sina、Aliyun、139、189、Gmail、Outlook、Yahoo、iCloud、Zoho 等)。使用 Python 标准库(smtplib + imaplib),无需安装第三方依赖。触发词:发邮件、收邮件、查邮件、删邮件、邮件管理、邮箱、SMTP、IMAP、发送附件、HTML邮件、邮件搜索。

Email Master — 全功能邮件管理技能

功能概述

Email Master — 全功能邮件管理技能是一项面向实际任务的技能,主要用于本技能使用 Python 标准库( smtplib + imaplib )实现完整的邮件收发管理, 无需安装第三方依赖;支持功能:;

核心要点

  • 发送 :纯文本/HTML正文(支持HTML文件路径)、多附件、内嵌图片、多收件人、抄送/密送、回复/转发邮件、高优先级;
  • 接收 :列出邮件列表、分页浏览、仅看未读;
  • 搜索 :按主题/发件人/收件人/日期/是否。

使用与执行

它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Email Master — 全功能邮件管理技能

概述

本技能使用 Python 标准库(smtplib + imaplib)实现完整的邮件收发管理,无需安装第三方依赖。

支持功能:

  • 发送:纯文本/HTML正文(支持HTML文件路径)、多附件、内嵌图片、多收件人、抄送/密送、回复/转发邮件、高优先级
  • 接收:列出邮件列表、分页浏览、仅看未读
  • 搜索:按主题/发件人/收件人/日期/是否未读筛选
  • 查看:完整邮件内容(含正文、HTML、附件列表)、回复链信息、附件大小
  • 管理:删除(支持批量)、标记已读/未读/星标(支持批量)、移动文件夹
  • 下载:保存单个附件或全部附件到本地
  • 自动识别:根据邮箱地址自动匹配SMTP/IMAP配置

脚本说明

脚本 功能
scripts/send_email.py 邮件发送(SMTP,支持HTML+附件+回复/转发+重试)
scripts/mail_client.py 邮件接收与管理(IMAP,兼容163 Unsafe Login)
scripts/email_config.py 邮箱配置自动识别(根据邮箱地址匹配服务器配置)

Python 运行路径(优先使用):

C:Usersadmin.workbuddybinariespythonversions3.13.12python.exe

快速开始

第一步:自动识别邮箱配置

python scripts/email_config.py user@163.com
# 自动输出:SMTP服务器、IMAP服务器、端口、认证方式

第二步:确认授权码

大多数邮箱不支持账户密码,需生成授权码/应用密码:

  • 163/126:网页版 → 设置 → POP3/SMTP/IMAP → 开启 → 获取授权码
  • QQ:邮箱设置 → 账户 → 生成授权码
  • Gmail:Google账号 → 安全 → 两步验证 → 应用密码

第三步:发送或收取邮件

见下方详细用法。

邮箱配置参考

常用快查表(完整配置见 references/email_providers.md,也可用 email_config.py 自动查询):

邮箱 SMTP IMAP SSL端口 认证方式
163 smtp.163.com imap.163.com 465/993 授权码
QQ smtp.qq.com imap.qq.com 465/993 授权码
126 smtp.126.com imap.126.com 465/993 授权码
Gmail smtp.gmail.com imap.gmail.com 587/993 应用密码
Outlook smtp-mail.outlook.com imap-mail.outlook.com 587/993 应用密码
Yahoo smtp.mail.yahoo.com imap.mail.yahoo.com 465/993 应用密码
iCloud smtp.mail.me.com imap.mail.me.com 587/993 应用密码
Aliyun smtp.aliyun.com imap.aliyun.com 465/993 授权码
139 smtp.139.com imap.139.com 465/993 授权码
189 smtp.189.cn imap.189.cn 465/993 授权码

发送邮件

基本发送(纯文本)

python scripts/send_email.py 
  --host smtp.163.com --port 465 
  --user tnktechqa@163.com --password "授权码" 
  --to "收件人@example.com" 
  --subject "邮件主题" 
  --body "邮件正文内容"

发送 HTML 邮件

# 直接传入HTML字符串
python scripts/send_email.py 
  --host smtp.163.com --port 465 
  --user tnktechqa@163.com --password "授权码" 
  --to "收件人@example.com" 
  --subject "HTML邮件" 
  --html "

你好

这是一封 HTML 邮件。

" # 传入HTML文件路径(自动读取文件内容) python scripts/send_email.py --host smtp.163.com --port 465 --user tnktechqa@163.com --password "授权码" --to "收件人@example.com" --subject "月报" --html "/path/to/report.html"

发送带附件的邮件

python scripts/send_email.py 
  --host smtp.163.com --port 465 
  --user tnktechqa@163.com --password "授权码" 
  --to "收件人@example.com" 
  --subject "请查收报告" 
  --html "

请查收附件中的报告。

" --attach "/path/to/report.pdf" "/path/to/data.xlsx"

发送给多人并抄送

python scripts/send_email.py 
  --host smtp.163.com --port 465 
  --user tnktechqa@163.com --password "授权码" 
  --to "a@example.com,b@example.com" 
  --cc "boss@company.com" 
  --subject "通知" 
  --html "

内容

" --from-name "技术团队"

回复邮件

# 传入原始邮件的 Message-ID(查看邮件详情时获取)
python scripts/send_email.py 
  --host smtp.163.com --port 465 
  --user tnktechqa@163.com --password "授权码" 
  --to "sender@example.com" 
  --subject "Re: 原始主题" 
  --body "收到,谢谢!" 
  --reply-to ""

高优先级邮件

python scripts/send_email.py 
  --host smtp.163.com --port 465 
  --user tnktechqa@163.com --password "授权码" 
  --to "boss@company.com" 
  --subject "紧急通知" 
  --html "

紧急事项

" --priority high

作为模块调用

import sys
sys.path.insert(0, "C:/Users/admin/.workbuddy/skills/email-master/scripts")
from send_email import send_email

result = send_email(
    host="smtp.163.com",
    port=465,
    user="tnktechqa@163.com",
    password="授权码",
    to=["收件人@example.com"],
    subject="主题",
    html_body="

HTML内容

正文

", attachments=["/path/to/file.pdf"], from_name="发件人名称", reply_to_msgid="", priority="high", max_retries=2, ) print(result) # {"success": True, "message": "..."}

接收与管理邮件

163/126/Yeah 邮箱注意:首次使用 IMAP 可能触发「Unsafe Login」安全限制。 本脚本已内置 ID 命令绕过机制。若仍被拒绝,请登录网页版邮箱确认授权。 详见下方「常见问题」。

列出文件夹

python scripts/mail_client.py 
  --host imap.163.com --user tnktechqa@163.com --password "授权码" 
  folders

列出收件箱最新20封

python scripts/mail_client.py 
  --host imap.163.com --user tnktechqa@163.com --password "授权码" 
  list --limit 20

只看未读邮件

python scripts/mail_client.py ... list --unread

搜索邮件

# 按主题搜索
python scripts/mail_client.py ... search --subject "发票"

# 按发件人搜索
python scripts/mail_client.py ... search --from "hr@company.com"

# 按日期范围搜索(格式:DD-Mon-YYYY,如 01-May-2024)
python scripts/mail_client.py ... search --since "01-May-2024" --before "31-May-2024"

# 组合搜索
python scripts/mail_client.py ... search --subject "合同" --from "legal@firm.com" --unread

查看邮件详情

# 查看并自动标记已读
python scripts/mail_client.py ... view --uid 123

# 查看但不标记已读
python scripts/mail_client.py ... view --uid 123 --no-mark-read

删除邮件(支持批量)

# 删除单封
python scripts/mail_client.py ... delete --uid 123

# 批量删除
python scripts/mail_client.py ... delete --uid "123,456,789"

标记邮件状态(支持批量)

# 标记为已读
python scripts/mail_client.py ... mark --uid 123 --flag read

# 批量标记未读
python scripts/mail_client.py ... mark --uid "123,456" --flag unread

# 添加星标
python scripts/mail_client.py ... mark --uid 123 --flag flagged

移动邮件到文件夹

python scripts/mail_client.py ... move --uid 123 --dest "已处理"

下载附件

# 下载指定附件
python scripts/mail_client.py ... download --uid 123 --filename "report.pdf" --dir "/path/to/save"

# 下载全部附件
python scripts/mail_client.py ... download --uid 123 --dir "/path/to/save"

获取邮箱统计

python scripts/mail_client.py ... stats

JSON格式输出(便于程序处理)

python scripts/mail_client.py ... list --json
python scripts/mail_client.py ... view --uid 123 --json

作为模块调用

import sys
sys.path.insert(0, "C:/Users/admin/.workbuddy/skills/email-master/scripts")
from mail_client import MailClient

with MailClient("imap.163.com", 993, "tnktechqa@163.com", "授权码") as client:
    # 列出邮件
    emails = client.list_emails(limit=10)
    for e in emails:
        print(e["subject"], e["from"], e["date"])

    # 搜索
    results = client.search_emails(subject="发票", unread_only=True)

    # 查看详情
    mail = client.get_email("123", mark_read=False)
    print(mail["subject"], mail["message_id"])

    # 批量删除
    client.delete_email("123,456,789")

    # 下载全部附件
    saved = client.download_all_attachments("123", save_dir="./downloads")

邮箱配置自动识别

# 查询邮箱配置
python scripts/email_config.py user@163.com
python scripts/email_config.py someone@gmail.com --json

# 作为模块调用
from email_config import get_email_config
config = get_email_config("user@163.com")
print(config["smtp_host"], config["smtp_port"])
print(config["imap_host"], config["imap_port"])
print(config["auth_guide"])

支持的邮箱域名:163.com、126.com、yeah.net、qq.com、sina.com、sohu.com、aliyun.com、139.com、189.cn、21cn.com、gmail.com、outlook.com、hotmail.com、live.com、yahoo.com、icloud.com、me.com、zoho.com、fastmail.com、protonmail.com 等 30+ 域名。

常见问题处理

错误 原因 解决方案
Authentication failed 使用了账户密码而非授权码 在邮箱设置中生成授权码/应用密码
Connection refused 端口错误或服务未开启 检查端口,163/QQ需在网页端开启SMTP/IMAP
SSL error 端口与加密方式不匹配 465用SSL,587用STARTTLS
163 Unsafe Login 网易邮箱安全保护 登录163网页版 → 设置 → POP3/SMTP/IMAP → 确认授权/开启IMAP;本脚本已内置ID命令绕过机制
163发送失败 未开启SMTP服务 登录163网页 → 设置 → POP3/SMTP/IMAP → 开启
Gmail认证失败 未使用应用密码 Google账号 → 安全 → 两步验证 → 应用密码
SMTPServerDisconnected 网络不稳定 已内置重试机制(默认2次),可 --retries 3 增加重试
IMAP select失败 文件夹名错误 先用 folders 命令查看可用文件夹名

163邮箱「Unsafe Login」详细解决步骤

  1. 登录 https://mail.163.com
  2. 点击右上角「设置」→「POP3/SMTP/IMAP」
  3. 确认 IMAP 服务已开启(如果未开启,点击开启并获取授权码)
  4. 如果有「安全登录」提示弹窗,点击确认授权
  5. 本脚本已内置 ID 命令自动发送客户端标识,可绕过大部分 Unsafe Login 检测
  6. 如仍然失败,可能需要在网页版中先手动收取/发送一封邮件激活账户

参考资料

  • 完整服务器配置表:references/email_providers.md
  • 邮箱自动识别:scripts/email_config.py <邮箱地址>
  • 发送脚本详细参数:scripts/send_email.py --help
  • 接收脚本详细参数:scripts/mail_client.py --help

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

0

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习