第 9 课 · 第六部分 Email 自动化

Email 自动化:收发邮件与附件

认证里最爱考"两条路线"的区别——先分清,再动手。

学习目标

预计用时:读课 35 分钟 + 上机 40 分钟 |  前置知识:第 6 课(字典、变量)、第 7~8 课(软件自动化四步思路) |  本课性质:网络自动化操作课,概念密集(两条路线、三类协议),认证选择题的高频区

知识地图

前两课操作的是本机软件(Excel、Word),本课第一次让机器人连上外面的世界。第 10 课的网页自动化会继续这条"联网"线。理解本课的关键,是先分清两条完全不同的技术路线,再把三类协议的分工和端口记牢。

本课在哪儿
第六部分 · 网络与系统。从"操作本机软件"跨到"通过网络通信"。
重点
两条路线的取舍;SMTP 发信属性;POP 三步收信;授权码;三协议端口。
难点
记清"谁负责发、谁负责收",以及 POP 删除后为什么要再断开连接才生效。
学完的标志
能独立配置一个邮箱,让机器人给自己发一封带附件的信,再把附件收下来存好。

一、两条路线,先选边

官方给了两条实现邮件的路:[1][2]

① 邮件客户端方式 依赖本机装好的 Outlook / IBM Notes。简单,但要先装客户端、并事先绑定好邮箱账号。
② 邮件协议方式 直接用 SMTP / POP3 / IMAP 协议,不用装客户端,但服务器、端口、授权码等配置较繁。
邮件自动化两条路线:客户端方式依赖 Outlook 等软件,协议方式用 SMTP 发信、POP3 收信 发信用 SMTP,收信用 POP;先选走哪条路 装了 Outlook 走客户端;服务器上什么都没有,就走协议。 ① 客户端方式 机器人 Outlook / IBM Notes 发件人邮箱要先绑定好 邮件服务器 简单,但依赖本机客户端与邮箱绑定。 ② 协议方式 机器人 SMTP 发 POP3 收 邮件服务器 不用装客户端,但要配服务器、端口和授权码。 授权码 ≠ 登录密码;SMTP 常用 465 / SSL,POP3 常用 995 / SSL。
图 7 · 两条路线:客户端方式让机器人操作 Outlook;协议方式让机器人直接用 SMTP 发、POP3 收。

为什么会有两条路?因为"发邮件"这件事有两个观察角度。客户端方式相当于"我打开 Outlook,像人一样点发送"——机器人操作的是已经替你连好邮箱的软件;协议方式相当于"我直接跟邮件服务器对话"——机器人自己说邮件协议这门语言。前者省配置但依赖本机软件,后者省软件但配置啰嗦。选哪条,看你的运行环境:装了 Outlook 就用前者,服务器上啥都没有就用后者。

1.1 客户端方式(Outlook / IBM Notes)

命令作用
发送邮件按 Outlook 习惯填收件人、标题、正文、附件
获取邮件列表收邮件,邮件数量填 0 表示收全部
回复邮件 / 下载附件 / 移动邮件 / 删除邮件与人工操作习惯基本一致

两个前提/限制(考点):填"发件人邮箱"时,该地址必须事先在 Outlook 里绑定好(可绑多个);Outlook 自动化主要适配 2010/2013/2016/2019。IBM Notes 不需要填发件人邮箱,但每条命令都要配密码模式,适配 9.0.1 / 11.1。[1]

易错点:客户端方式不是"装了 Outlook 就能用"。发件人地址若没在 Outlook 里绑定,发送会失败;换一台没装客户端、或版本不在适配列表里的电脑,整条流程都跑不起来。这也是它"简单但不通用"的原因。

二、协议方式:发邮件用 SMTP

路径:命令区 ▸ 网络 ▸ SMTP/POP ▸ 发送邮件。一条命令就能发。

SMTP 的全称是 Simple Mail Transfer Protocol(简单邮件传输协议)。类比一下:它就像邮局的寄件窗口——你只管把信递进去、写好收件地址,剩下的投递由它负责。所以发邮件认准 SMTP。

属性以 QQ 邮箱为例
SMTP服务器smtp.qq.com
服务器端口 / SSL加密465 / 是
邮箱帐号你的邮箱账号
登录密码授权码(不是邮箱原密码!)
收信邮箱 / 邮件标题 / 邮件正文 / 邮件附件按需填写
输出到成功 True,失败 False

2.1 授权码:机器人登录的专用钥匙

授权码是邮箱服务商在你开启 POP3/SMTP 服务时生成的一串专用密码。它和你的登录密码是两回事: 登录密码能改设置、能登录网页;授权码只用于第三方软件收发邮件,权限被限制在收发范围内。 万一泄露,改授权码即可,不影响你正常登录邮箱。

必须提前做的一步:去邮箱设置里开启 POP3/SMTP 服务,系统会生成一串授权码(只显示一次),机器人登录就用这串码。[2]

易错点(端口 / 授权码):两类报错最常见——① 密码处填了邮箱原密码,认证直接被拒;② 端口或 SSL 填错(例如 465 配成了"SSL 否"),连接超时。另外授权码只显示一次,页面关掉就找不回,只能重新生成。建议拿到后立刻存进密码管理器,别只截图发在聊天里。

安全习惯:把授权码写进变量再传给命令,而不是硬写在流程里。流程文件可能被分享、上传、备份——凭据一旦写死,就等于把钥匙一起交出去了。这也是第 9 课和后续项目一直要坚持的习惯。

三、协议方式:收邮件用 POP

收邮件一条命令不够,要三步配合。先记住 POP3 的角色:它像邮局的取件窗口,专门负责把服务器上的信取下来。发信认 SMTP,收信认 POP3。

POP 收邮件三步
① 连接邮箱        → 输出到 objMail(邮箱对象)
     服务器 pop.qq.com / 端口 995 / SSL 是 / 使用协议 POP3
② 获取邮件列表    → 操作对象 objMail,邮件数量 10(0=全部)
                     输出到的是字典,每封邮件是一个"邮件对象"
③ 下载附件 / 删除邮件 → 需要"邮箱对象 + 某个邮件对象"

邮件对象是字典,包含标题、正文、附件、发送人、日期、大小等字段——又是第 6 课字典的应用。[2]

3.1 三步分别拿到什么

  1. 连接邮箱:填服务器地址、端口、SSL、使用协议(POP3),输出到一个邮箱对象(如 objMail)。这一步相当于"走到取件窗口前、报上身份"。
    预期:连接成功才继续;失败通常是授权码或服务没开。
  2. 获取邮件列表:操作对象填上一步的邮箱对象,邮件数量填具体数或 0(全部),输出到一个字典/列表,里面每封邮件是一个"邮件对象"。
    预期:能读出数量,并打印出某封邮件的字段看看结构。
  3. 下载附件 / 删除邮件:都要同时给出"邮箱对象 + 某个邮件对象"——机器人需要知道"在哪封信上操作"。下载附件要填保存目录。
    预期:附件落到指定目录。

一个易错点(删除不生效):用 POP 删除邮件后,必须再调用 断开邮箱连接 命令,删除才会真正生效。若服务器设置了"禁止收信软件删除邮件",则依然删不掉。[2]

易错点:很多人以为"调了删除邮件,服务器上就没了"。POP 的工作方式更像"先在本机标记、等你断开时才提交给服务器"。所以删完不断开=白删。另外邮件对象是字典,取字段时字段名拼错也会拿到空值——先打印整个字典看清结构,再取值。

3.2 顺带认识 IMAP

IMAP 比 POP 更现代:支持"仅限未读消息""标记为已读"、查找邮件、移动邮件、获取邮箱文件夹列表等。QQ 邮箱 IMAP 为 imap.qq.com / 端口 993。POP 没有"移动邮件"这个能力——这是两者的关键区别。

用生活类比:POP 像"把信全部取回家"(取走后服务器上可能就没了),IMAP 像"信留在邮局,你只是去阅览室里看和整理"(已读、分类、移动到别的文件夹都在服务器上完成)。所以需要在服务器上管理邮件、多设备同步时选 IMAP;只是简单下载内容时 POP 就够。

四、三种协议端口一览(记住常用的)

协议用途默认端口常用 SSL 端口
SMTP发邮件25465
POP3收邮件110995
IMAP收/管理邮件143993

记忆口诀:"发 SMTP、收 POP3、管理 IMAP";加密端口都在 400 段往上:465 / 995 / 993。记不住时先想"哪个协议管什么",再记端口。

命令属性细节见 参考页:Email 命令速查。

本课小结

必记要点

SMTP 发邮件协议 POP3 收邮件协议 IMAP 收/管理邮件协议 授权码 第三方收发专用密码 邮箱对象 连接邮箱后的变量 邮件对象 一封邮件,本质是字典 断开邮箱连接 让删除生效的收尾动作

自测

不看上面,凭记忆作答。答错不要紧,解析会告诉你为什么。

上机实践(回到 Windows)

准备(先开通权限):拿一个自己的邮箱(建议先用 QQ 邮箱做实验)。登录网页版邮箱 → 进入设置 → 找到账户或POP3/IMAP/SMTP 服务一栏 → 开启 POP3/SMTP 服务(按提示用手机验证)→ 系统显示一串授权码。
注意:授权码只显示一次,务必先存好;若看丢了,回到同一页面重新生成即可。

任务 A(发信):用 发送邮件 给自己发一封"测试成功"邮件。SMTP 服务器 smtp.qq.com、端口 465、SSL 是、密码填授权码。看收到的邮件,并观察 输出到 的布尔值是否为 True。

任务 B(取列表):用 连接邮箱(POP)连上你的邮箱,再用 获取邮件列表 取 3 封,输出调试信息看看"邮件对象"字典里有哪些字段(标题、发送人、日期、大小……)。

任务 C(下附件):从列表里挑一封,用 下载附件 把附件存到 res 目录。如果这封没有附件,就先发一封带附件的给自己再收。

任务 D(收尾验证):挑一封垃圾邮件用 删除邮件,然后记得调用 断开邮箱连接,再刷新邮箱网页核对是否真的删掉了。这一步专治"删除不生效"。

任务 E(安全习惯):运行完把授权码从流程里删掉,改用一个变量传入。把你怎么做的告诉我——真实项目里,凭据绝不能硬写在流程里。

连不上、报错看不懂,把报错原文 + 你填的服务器/端口发我。

精读一手来源

本节首选:《开发者指南(第二辑)· 网络和系统操作 · 电子邮件协议》(SMTP/POP/IMAP 全流程 + QQ 邮箱配置截图)。 客户端方式看 《第一辑 · 软件自动化 · 邮件客户端自动化》。