影刀RPA 邮件自动化入门:SMTP收发邮件与附件处理完全指南
影刀RPA 邮件自动化入门SMTP收发邮件与附件处理完全指南每天手动发几十封邮件、从邮箱里扒附件、盯着收件箱等某封邮件——这些是自动化最该接手的活。影刀对邮件自动化的支持分两个层面一是内置的邮件相关动作简单场景够用二是Python节点的smtplib和imaplib库复杂场景绕不开。这篇文章把两种方式都讲透从发一封简单邮件到批量下载附件一步到位。什么情况用邮件自动化和手动操作相比自动化的优势在三个场景特别明显定时发送报表。每天早上9点把昨天的销售数据汇总成Excel自动发给老板。人可以做但人会忘、会请假、会有起床气。自动化的不会。批量下载附件。供应商每天发来几十封带附件的对账单一个个下载、解压、汇总。手工做半小时自动化3分钟。监控收件箱触发流程。收到客户的订单邮件 → 自动解析内容 → 写入ERP → 回复确认邮件。整条链路无人值守。批量发送个性化邮件。给100个客户发不同的报价单每人一个专用附件。手工发你一天都干不完自动化10分钟。方式一影刀内置邮件动作简单场景影刀在网络分类下提供了一套邮件动作核心就三个【发送邮件】通过SMTP发邮件支持正文、附件、抄送【读取邮件】通过IMAP读取收件箱支持筛选条件【下载附件】把邮件里的附件保存到本地发送一封邮件入门操作拖入**【发送邮件】**动作配置SMTP服务器信息发件服务器smtp.qq.comQQ邮箱/smtp.163.com163邮箱/smtp.gmail.comGmail端口QQ邮箱用465SSL163用465Gmail用587发件邮箱地址和密码注意不是邮箱登录密码是SMTP授权码填写收件人、主题、正文如果有附件在附件栏添加文件路径配置大概长这样SMTP服务器smtp.qq.com 端口465 SSL是 发件邮箱dauuhuangqq.com 授权码xxxxxxxxxxxxxx从QQ邮箱设置里获取 收件人bosscompany.com 主题【日报】2026-07-01 销售数据 正文老板好昨日销售额为 ¥35,280.00详见附件。 附件C:\reports\daily_20260701.xlsx获取SMTP授权码这是个新手必踩的坑。不同邮箱的授权码获取方式店群矩阵自动化突破运营极限QQ邮箱登录QQ邮箱 → 设置 → 账户 → POP3/IMAP/SMTP服务 → 开启 → 生成授权码。系统会弹出一个16位字符串复制下来。注意生成授权码时QQ邮箱会要求短信验证。163邮箱登录163邮箱 → 设置 → POP3/SMTP/IMAP → 开启 → 新增授权码。163的授权码可以自定义比如设置成容易记的。有效期默认长期也可以在设置里调。GmailGoogle账号 → 安全性 → 两步验证 → 应用专用密码。生成时选择邮件和你的设备然后会得到一个16位密码。关键提醒授权码只显示一次关了页面就看不到了。务必当场复制保存。截图也行但那串字符截图丢了更麻烦。读取邮件**【读取邮件】**动作的配置IMAP服务器imap.qq.comQQ/ imap.163.com163/ imap.gmail.comGmail 端口993 SSL是 邮箱地址你的邮箱 授权码同上 筛选条件未读 / 指定发件人 / 指定主题关键词 / 指定日期范围 返回结果邮件列表发件人、主题、时间、正文、附件列表返回的邮件列表是一个结构化数据每条邮件包含字段字段说明发件人发件邮箱地址主题邮件标题时间发送时间正文邮件文本内容附件列表附件文件名和下载链接邮件ID唯一标识符实际操作时要注意IMAP读取邮件默认只返回前20封。如果你的收件箱里囤了几千封未读需要配置读取数量或分页。下载附件**【下载附件】**动作需要嵌套在读取邮件之后流程 1. 【读取邮件】→ 得到邮件列表 mail_list 2. 【ForEach】遍历 mail_list 中的每封邮件 3. 【IF】该邮件的附件列表不为空 4. 【下载附件】 邮件ID 当前邮件的邮件ID 保存路径 C:\attachments\ 文件名 5. 【END IF】 6. 【END ForEach】内置动作的局限性影刀内置邮件动作确实方便但有几个硬伤不支持HTML格式邮件。只能发纯文本不能发带排版、图片、表格的富文本邮件。附件大小限制。大附件超过10MB容易超时没有断点续传。邮件筛选能力弱。只能按未读、发件人、主题关键词筛选不能按邮件正文内容或附件类型筛选。不能标记已读/移动邮件。读取完后邮件状态不变下次还会读到同一批。这些限制在简单场景下不影响使用。一旦你的需求稍微复杂一点就得切换到Python节点了。方式二Python节点发邮件进阶玩家Python的smtplib和email库是标准库影刀Python节点默认就支持不需要额外安装。它能做到影刀内置动作做不到的一切。发HTML邮件用Python节点发一封带表格的邮件importsmtplibfromemail.mime.textimportMIMETextfromemail.mime.multipartimportMIMEMultipartfromemail.mime.baseimportMIMEBasefromemailimportencoders# 构建邮件msgMIMEMultipart()msg[From]dauuhuangqq.commsg[To]bosscompany.commsg[Subject]【日报】2026-07-01 销售数据# HTML正文html_body h2昨日销售汇总/h2 p销售额b stylecolor:red¥35,280.00/b/p table border1 cellpadding5 tr stylebackground:#eee th商品/thth销量/thth金额/th /tr trtd商品A/tdtd120/tdtd¥12,000/td/tr trtd商品B/tdtd85/tdtd¥23,280/td/tr /table brp详情见附件。/p ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6b8235cbfda44506800dec9027a5a1c0.png#pic_center) msg.attach(MIMEText(html_body,html,utf-8))# 添加附件filepathrC:\reports\daily_20260701.xlsxwithopen(filepath,rb)asf:attachmentMIMEBase(application,octet-stream)attachment.set_payload(f.read())encoders.encode_base64(attachment)attachment.add_header(Content-Disposition,fattachment; filenamedaily_20260701.xlsx)msg.attach(attachment)# 发送serversmtplib.SMTP_SSL(smtp.qq.com,465)server.login(dauuhuangqq.com,你的授权码)server.send_message(msg)server.quit()print(邮件发送成功)这段代码的核心价值在于html_body——你可以嵌任何HTML表格、图片链接、彩色文字、加粗强调全都可以。发给老板的报表看起来专业得多。批量个性化发送给不同客户发不同内容、不同附件。把客户列表放在一个Excel里客户名邮箱报价单路径备注A公司aa.comA报价.xlsx已签约老客户B公司bb.comB报价.xlsx新客户importsmtplibfromemail.mime.textimportMIMETextfromemail.mime.multipartimportMIMEMultipartfromemail.mime.baseimportMIMEBasefromemailimportencodersimportopenpyxl# 读取客户列表假设Excel已通过影刀读取到变量中# customers 影刀传入的客户数据列表serversmtplib.SMTP_SSL(smtp.qq.com,465)server.login(dauuhuangqq.com,你的授权码)forcustomerincustomers:namecustomer[客户名]email_addrcustomer[邮箱]filepathcustomer[报价单路径]remarkcustomer[备注]msgMIMEMultipart()msg[From]dauuhuangqq.commsg[To]email_addr msg[Subject]f{name}— 本月报价单body_textf p{name}的负责人您好/p p附件是本月的报价明细请查收。/p p如有疑问请回复本邮件。/p # 老客户额外加一句if老客户inremark:body_textp stylecolor:blue感谢您一直以来的信任与支持/pmsg.attach(MIMEText(body_text,html,utf-8))# 添加附件withopen(filepath,rb)asf:attachmentMIMEBase(application,octet-stream)attachment.set_payload(f.read())encoders.encode_base64(attachment)attachment.add_header(Content-Disposition,fattachment; filename{filepath.split(chr(92))[-1]})msg.attach(attachment)server.send_message(msg)print(f已发送给{name}({email_addr}))server.quit()print(全部发送完成)关键点SMTP连接只建立一次循环里复用同一个连接。如果每次都smtplib.SMTP_SSL()然后quit()100个客户就要建立100次连接大部分时间浪费在TCP握手上了。方式三Python节点读邮件IMAP影刀内置的**【读取邮件】**在内容解析上能力有限特别是处理复杂邮件格式时。Python的imaplib可以直接操作原始邮件数据。读取未读邮件并解析importimaplibimportemailfromemail.headerimportdecode_header# 连接IMAP服务器mailimaplib.IMAP4_SSL(imap.qq.com,993)mail.login(dauuhuangqq.com,你的授权码)mail.select(INBOX)# 搜索未读邮件status,message_idsmail.search(None,UNSEEN)id_listmessage_ids[0].split()results[]formsg_idinid_list[-10:]:# 只读最近10封status,msg_datamail.fetch(msg_id,(RFC822))raw_emailmsg_data[0][1]msgemail.message_from_bytes(raw_email)# 解码主题subject,encodingdecode_header(msg[Subject])[0]ifisinstance(subject,bytes):subjectsubject.decode(encodingorutf-8,errorsignore)# 解码发件人from_strmsg[From]# 提取正文bodyifmsg.is_multipart():forpartinmsg.walk():content_typepart.get_content_type()ifcontent_typetext/plainorcontent_typetext/html:payloadpart.get_payload(decodeTrue)ifpayload:bodypayload.decode(utf-8,errorsignore)else:payloadmsg.get_payload(decodeTrue)ifpayload:bodypayload.decode(utf-8,errorsignore)results.append({id:msg_id.decode(),subject:subject,from:from_str,body:body[:200]# 只取前200字符做摘要})mail.logout()# 将 results 传回影刀变量按发件人主题日期组合筛选IMAP的搜索语法非常强大比影刀内置动作灵活得多# 搜索发件人包含供应商且主题包含对账单mail.search(None,FROM,供应商,SUBJECT,对账单)# 搜索最近7天的邮件mail.search(None,SINCE,24-Jun-2026)# 搜索带附件的邮件mail.search(None,HAS,attachment)# 组合搜索最近7天 发件人是供应商 有附件mail.search(None,(SINCE 24-Jun-2026 FROM 供应商 HAS attachment))下载附件并自动重命名importimaplibimportemailimportos mailimaplib.IMAP4_SSL(imap.qq.com,993)mail.login(dauuhuangqq.com,你的授权码)mail.select(INBOX)save_dirrC:\downloads\attachmentsos.makedirs(save_dir,exist_okTrue)# 读取最近50封邮件的附件status,idsmail.search(None,ALL)formsg_idinids[0].split()[-50:]:status,msg_datamail.fetch(msg_id,(RFC822))msgemail.message_from_bytes(msg_data[0][1])# 获取发件人和日期用于重命名from_namemsg[From].split()[0].replace(,).replace(,).strip()date_strmsg[Date][:10].replace( ,-)forpartinmsg.walk():ifpart.get_content_disposition()attachment:filenamepart.get_filename()iffilename:# 解码文件名decoded_nameemail.header.decode_header(filename)[0][0]ifisinstance(decoded_name,bytes):filenamedecoded_name.decode(utf-8,errorsignore)else:filenamedecoded_name# 加前缀防重名save_namef{date_str}_{from_name}_{filename}save_pathos.path.join(save_dir,save_name)withopen(save_path,wb)asf:f.write(part.get_payload(decodeTrue))print(f已下载{save_name})mail.logout()重命名的逻辑很有用——如果所有附件都叫报价单.xlsx下载到同一个文件夹里后下载的会覆盖前面的。加上日期和发件人前缀后就不会了。容易踩的四个坑坑1授权码和登录密码搞混temu店群自动化报活动案例这是新手翻车第一现场。SMTP/IMAP登录用的不是邮箱登录密码是授权码。很多人在QQ邮箱设置里折腾半天把邮箱密码填进去结果一直报认证失败。原因就是这个。另外QQ邮箱和163邮箱的SMTP/IMAP服务默认是关闭的需要先去设置里手动开启。如果开都还没开连授权码都获取不到。坑2Gmail需要开启低安全性应用或使用应用专用密码Gmail的安全策略比较严格。如果你用的是普通Gmail账号需要在Google账户设置里开启两步验证然后生成应用专用密码给SMTP/IMAP使用。如果用的是企业GmailGoogle Workspace可能还需要管理员在后台开启SMTP/IMAP访问权限。坑3大附件发送超时SMTP发邮件默认没有超时控制但大附件20MB以上可能导致连接被邮件服务器掐断。解决方案如果附件超过10MB压缩一下再发或者上传到云盘在邮件正文里放下载链接。别硬传硬传必翻。importzipfile# 压缩大文件defcompress_file(src_path,zip_path):withzipfile.ZipFile(zip_path,w,zipfile.ZIP_DEFLATED)aszf:zf.write(src_path,os.path.basename(src_path))坑4读取邮件后不标记已读如果不标记已读下次读又是同一批邮件处理过的数据会重复。# 处理完后标记已读mail.store(msg_id,FLAGS,\\Seen)或者更安全的做法——读完后移动到已处理文件夹原收件箱保持干净# 先创建归档文件夹如果不存在mail.create(已处理)# 移动邮件mail.copy(msg_id,已处理)mail.store(msg_id,FLAGS,\\Deleted)mail.expunge()选型指南场景推荐方式理由发纯文本日报影刀内置动作配置即用不用写代码发带表格/图片的报表Python节点内置不支持HTML格式批量发个性化邮件Python节点循环模板组合灵活下载20MB以下附件两者都可看个人熟悉程度按复杂条件筛选邮件Python节点(IMAP)内置筛选太弱处理邮件→触发后续流程Python节点需要解析正文/提取关键信息新手建议先从内置动作入手碰到内置动作搞不定的场景再切Python。不用一步到位追求最优雅的方案能跑通再优化。核心就三条授权码不是登录密码HTML邮件得靠Python读完邮件要标记已读。这三条记住了邮件自动化就不会有大坑。作者林焱

相关新闻

MAMA注意力机制:高效处理长序列的动态内存优化方案

MAMA注意力机制:高效处理长序列的动态内存优化方案

1. 注意力机制演进与MAMA的诞生背景在深度学习领域,注意力机制已经成为处理序列数据的标配组件。从最初的简单加权到后来的自注意力(Self-Attention),再到各种变体如稀疏注意力、局部注意力等,这个方向的发展从未停止。…

2026/7/25 9:03:42 阅读更多 →
金融产品动态定价系统架构与实现

金融产品动态定价系统架构与实现

1. 金融产品定价策略优化系统概述 在金融行业摸爬滚打十几年,我深刻体会到定价策略是金融机构的核心竞争力。传统定价模式往往依赖经验公式和静态规则,面对瞬息万变的市场环境越来越力不从心。这套金融产品定价策略优化系统,正是为了解决这个…

2026/7/25 9:03:42 阅读更多 →
影刀RPA 退换货处理自动化:RMA申请与退款跟踪

影刀RPA 退换货处理自动化:RMA申请与退款跟踪

影刀RPA 退换货处理自动化:RMA申请与退款跟踪 作者:林焱 | 分类:影刀RPA新手教程 | 难度:★★ 什么情况用 电商售后客服每天处理大量退换货请求。买家发起退货 → 客服审核 → 同意后生成退货单 → 买家寄回 → 仓库收货确认 → 发…

2026/7/25 9:03:42 阅读更多 →

最新新闻

5步解锁QQ音乐加密格式:macOS用户必备的终极解密工具

5步解锁QQ音乐加密格式:macOS用户必备的终极解密工具

5步解锁QQ音乐加密格式:macOS用户必备的终极解密工具 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转…

2026/7/25 9:25:49 阅读更多 →
物流轨迹系统的架构设计:从GPS上报到实时位置追踪的工程复盘

物流轨迹系统的架构设计:从GPS上报到实时位置追踪的工程复盘

物流轨迹系统的架构设计:从GPS上报到实时位置追踪的工程复盘物流轨迹系统的难点不在于"看到车在哪",而在于100万台车同时上报时,你能不能在1秒内回答"哪些车偏离了预定路线"。一、问题的规模 2023年我们为一家头部快递企…

2026/7/25 9:25:49 阅读更多 →
零代码开发AI技能:扣子平台实战指南

零代码开发AI技能:扣子平台实战指南

1. 项目概述:零代码玩转Skills的新时代 最近在开发者圈子里流传着一个有趣的说法:"不会写代码也能开发Skills"。作为一个在AI产品领域摸爬滚打多年的从业者,我起初对这个说法持怀疑态度,直到亲自体验了"扣子"…

2026/7/25 9:25:49 阅读更多 →
Zotero Style插件终极配置指南:5步打造高效文献管理系统

Zotero Style插件终极配置指南:5步打造高效文献管理系统

Zotero Style插件终极配置指南:5步打造高效文献管理系统 【免费下载链接】zotero-style Ethereal Style for Zotero 项目地址: https://gitcode.com/GitHub_Trending/zo/zotero-style Zotero Style是一款专为Zotero文献管理软件设计的视觉增强插件&#xff0…

2026/7/25 9:25:49 阅读更多 →
用AI做舆情监控:从社交媒体爬取到情感分析的实时Pipeline

用AI做舆情监控:从社交媒体爬取到情感分析的实时Pipeline

用AI做舆情监控:从社交媒体爬取到情感分析的实时Pipeline 一、场景痛点与技术挑战 企业舆情监控是品牌安全的底线防线。一条负面消息在30分钟内就能引爆全网。传统人工巡检根本跟不上信息传播速度。社交媒体日均产生数亿条内容。人工筛选耗时且遗漏率高。 核心痛点有…

2026/7/25 9:25:49 阅读更多 →
ControlNet v1.1 shuffle版:AI绘画精准控制新突破

ControlNet v1.1 shuffle版:AI绘画精准控制新突破

1. 项目概述:ControlNet v1.1 shuffle版的突破性意义去年ControlNet的横空出世,彻底改变了AI绘画的工作流程。作为一名从Stable Diffusion早期版本就开始折腾的创作者,我清楚地记得第一次用ControlNet实现精准构图时的震撼——它终于让AI绘画…

2026/7/25 9:24:49 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻