尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
gogcli `gog gmail drafts forward` 实战指南:在终端把邮件保存为转发草稿
gogcligog gmail drafts forward实战指南在终端把邮件保存为转发草稿【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcligog gmail drafts forward是 gogcliGoogle Workspace in your terminal中「草稿drafts」子命令族的一员作用是把 Gmail 中任意一封已存在的邮件转存为转发草稿——即不立即发送而是生成一份带Fwd:主题、Gmail 风格转发分隔线和原附件内容的草稿供你随后用gog gmail drafts send发送或继续编辑。它非常适合需要「先拟稿、后审批、再发送」的自动化工作流以及希望在发送前人工复核转发内容、规避误发的场景。读完本文你将掌握该命令的完整用法、全部参数语义、与直接转发gog gmail forward的差异以及它在源码层面的实现原理。命令概览与别名gog gmail drafts forward的命令骨架如下gog gmail (mail,email) drafts (draft) forward (fwd) messageId [flags]其中gmail、drafts、forward三段均有别名gmail可写为mail或emaildrafts可写为draftforward可写为fwd。因此下面几种写法完全等价gog gmail drafts forward messageId --to aliceexample.com gog gmail draft fwd messageId --to aliceexample.com gog email drafts forward messageId --to aliceexample.com位置参数messageId是被转发的原始 Gmail 消息 ID可在gog gmail messages search或gog gmail thread get的输出中获得。该命令归属于 gog gmail drafts 命令族同族还有create、update、reply、reply-all、send、get、list、delete等子命令在源码中转发草稿命令定义于 internal/cmd/gmail_drafts_compose.go结构体GmailDraftsForwardCmd直接内嵌了与发送侧转发完全共享的GmailForwardOptions// GmailDraftsForwardCmd saves a forward as a draft. Mirrors GmailForwardCmd. type GmailDraftsForwardCmd struct { MessageID string arg: name:messageId help:Gmail message ID to forward Options GmailForwardOptions embed: } func (c *GmailDraftsForwardCmd) Run(ctx context.Context, flags *RootFlags) error { return c.Options.runDraft(ctx, flags, c.MessageID) }这意味着它完整继承了gog gmail forward的每一项能力只是最终落点是「保存草稿」而非「直接发送」。核心参数详解转发内容相关参数Flag类型默认值说明--tostring收件人逗号分隔。发送时必填保存草稿时可选——这是与直接转发最关键的行为差异--ccstring抄送收件人逗号分隔--bccstring密送收件人逗号分隔--fromstring以该邮箱地址发送必须是已验证的 send-as 别名--note--introstring放在被转发邮件上方的引言文字--note-filestring引言文件路径纯文本-表示从标准输入读取--skip-attachmentsbool不包含原始邮件的附件收件人解析--to/--cc/--bcc都走同一套地址感知解析parseComposeRecipients因此显示名中含逗号的收件人如Smith, John johnexample.com会被当作一个收件人而不是被错误拆分。测试 internal/cmd/execute_gmail_forward_test.go 同时覆盖了gmail forward与gmail drafts forward两条路径二者共享GmailForwardOptions下的 To/Cc/Bcc 头正确性。收件人合法性前置校验--to/--cc/--bcc中的非法地址会在发起任何 Gmail API 请求之前就报错错误信息中带有对应 flag 名原始邮件也不会被拉取见 execute_gmail_forward_test.go。引言去重读取--note与--note-file二选一resolveBodyInput保证内容只读取一次当--note-file -从 stdin 读取时若--to缺失发送路径会先快速失败而不会白白消耗 stdin源码见 internal/cmd/gmail_forward.go。输出与安全相关通用参数Flag类型默认值说明--access-tokenstring直接使用给定的访问令牌绕过存储的刷新令牌令牌约 1 小时过期-a--account--acctstring账户邮箱、别名或auto用于认证的 Google API 命令--clientstringOAuth 客户端名称选择存储的凭据与令牌桶--colorstringauto输出着色auto|always|never--disable-commandsstring逗号分隔的禁用命令列表支持点路径-n--dry-run--dryrun--noop--previewbool不做任何更改打印预期动作并以成功退出--enable-commandsstring逗号分隔的启用命令前缀列表支持点路径限制 CLI--enable-commands-exactstring逗号分隔的精确启用命令列表支持点路径父命令不会启用子命令-y--force--assume-yes--yesbool跳过破坏性命令的确认提示--gmail-no-sendboolfalse阻止 Gmail 发送操作Agent 安全开关-h--helpkong.helpFlag显示上下文相关帮助--homestring覆盖 gogcli 的 config/data/state/cache 根目录等价于GOG_HOME-j--json--machineboolfalse向 stdout 输出 JSON最适合脚本化--no-input--non-interactive--noninteractivebool永不提示否则失败适合 CI-p--plain--tsvboolfalse向 stdout 输出稳定可解析文本TSV无颜色--quota-projectstring用于 API 计费的 Google Cloud 项目以X-Goog-User-Project发送某些 API 与--access-token或 ADC 一起使用需要它--readonlyboolfalse在运行时阻止变更类 API 请求auth add也会请求只读 OAuth scope--results-onlyboolJSON 模式下只输出主结果丢弃nextPageToken等信封字段--select--pick--projectstringJSON 模式下选择逗号分隔的字段尽力而为支持点路径-v--verbosebool启用详细日志--versionkong.VersionFlag打印版本并退出--wrap-untrustedboolfalseJSON/raw 输出中将拉取的文本字段包在外部不可信内容标记内与 no-send 的关系重要保存草稿不是发送因此--gmail-no-send与账户级 no-send 配置不会拦截本命令。源码中GmailDraftsForwardCmd走requireGmailService而非发送路径的requireGmailSendService跳过了按账户的 no-send 检查internal/cmd/gmail_drafts_compose.go。这使草稿类命令在 no-send 保护环境下依然可用——你可以在严格禁止发送的 Agent 环境中安全地「拟稿不发出」。典型使用示例1. 基础用法带引言把邮件保存为转发草稿gog gmail drafts forward 18f0a2b3c4d5e6f7 --to aliceexample.com \ --note FYI see below生成的主题自动变为Fwd: 原主题正文中引言位于转发分隔线之上。2. 多收件人 抄送/密送gog gmail drafts forward 18f0a2b3c4d5e6f7 \ --to aliceexample.com, bobexample.com \ --cc carolexample.com \ --bcc auditexample.com3. 引用 stdin 作为引言echo 请审阅后由你发送 | gog gmail drafts fwd 18f0a2b3c4d5e6f7 \ --to aliceexample.com --note-file -4. 不携带原附件gog gmail drafts forward 18f0a2b3c4d5e6f7 --to aliceexample.com --skip-attachments5. 先干跑预览不产生任何 API 请求gog gmail drafts forward 18f0a2b3c4d5e6f7 --to aliceexample.com --dry-run --json干跑会输出将要执行的完整动作字典message_id、解析后的to/cc/bcc、from、note_len、skip_attachments动作名为gmail.drafts.forward且不会发起任何 Gmail API 调用——测试 execute_gmail_forward_test.go 对此有明确断言。6. 不填收件人仅存一份无地址转发草稿gog gmail drafts forward 18f0a2b3c4d5e6f7保存草稿路径以recipientsOptional调用resolveForwardInputs允许像 Gmail 网页版一样暂存一封还没有收件人的转发草稿发送侧则必须--to。对应源码见 internal/cmd/gmail_forward.go 中的recipientRequirement常量与发送/草稿两条路径的不同取值。输出与后续操作命令成功后默认以 TSV 输出草稿结果加--json时输出 JSON 对象outfmt.PrimaryResult包装。两个模式都包含以下字段draftId新草稿的 IDmessageId草稿内嵌消息的 IDthreadId草稿所在线程 IDJSON 模式还会额外输出inReplyTo、references、replyContextSource转发草稿不携带回复上下文这些字段为null。由于转发开启新线程且不写入In-Reply-To/Referencesexecute_gmail_forward_test.go 明确断言转发草稿不携带回复头writeDraftResult会回退使用Drafts.Create响应中 Gmail 分配的 thread idinternal/cmd/gmail_drafts_compose.go。拿到draftId后可以继续# 查看草稿详情 gog gmail drafts get draftId # 编辑草稿如补充正文 gog gmail drafts update draftId --body 新的正文内容 --body-html pHTML 正文/p # 最终发送 gog gmail drafts send draftId发送走requireGmailSendService此时若账户处于 no-send 配置或带了--gmail-no-send草稿发送会被正确拦截——所以「保存草稿 → 人工/流程审批 → 发送」的安全链路是完整闭合的。源码实现转发草稿是怎么构建的转发草稿的构建复用了发送侧转发的全部逻辑核心在 internal/cmd/gmail_forward.go 的buildForwardComposeMessage主要步骤为解析发送身份resolveComposeSender根据--from必须是已验证 send-as 别名或账户默认身份确定发件人。拉取原始邮件以Format(full)获取原始消息提取From/To/Cc/Date/Subject头及纯文本、HTML 正文。生成主题buildForwardSubject自动在主题前加Fwd:并通过stripForwardPrefix避免前缀堆叠Fwd: Fwd: ...会去重为单个Fwd:空主题则使用Fwd: (no subject)。测试 execute_gmail_forward_test.go 覆盖了Fwd:/Fw:/FWD:/Re:等各种前缀组合。重排原始日期原邮件日期会按本机配置时区mailDateLocation重排为 Gmail 风格的Date: Tue, Mar 10, 2026 at 1:00 PM格式。构建转发正文纯文本formatForwardedMessage生成以---------- Forwarded message ---------分隔、包含From/Date/Subject/To/Cc原头的正文引言位于最上方HTML若原邮件含 HTML 正文formatForwardedMessageHTML生成gmail_quote风格的 HTML 引用块引言做 HTML 转义From头会拆分出显示名与地址更友好地呈现。保留附件与内联资源preserveForwardMessageParts会把原邮件的附件以及 HTML 正文依赖的 CID 内联资源一并重新挂载--skip-attachments时跳过普通附件但 CID 内联资源仍会保留以保证 HTML 渲染正确。落点差异发送路径用Messages.Send草稿路径用Drafts.Create最终writeDraftResult输出结果。草稿与直接转发的关键差异对照维度gog gmail forwardgog gmail drafts forward最终动作users.messages.send直接发送users.drafts.create保存草稿--to要求必填recipientsRequired可选recipientsOptional可存无地址草稿服务门控requireGmailSendService受 no-send 拦截requireGmailServiceno-send 不拦截干跑动作名gmail.forwardgmail.drafts.forward输出发送结果messageId/threadId草稿结果draftId/messageId/threadId两者的resolveForwardInputs、buildForwardComposeMessage、dryRunFields完全共享代码注释明确说明这是「draft-saving counterpart」internal/cmd/gmail_drafts_compose.go因此在收件人解析、附件处理、主题与正文格式上行为完全一致——你可以放心地用gog gmail drafts forward先审后发。适用场景与使用建议拟稿审批流在 CI/Agent 任务中先生成转发草稿交由人工用gog gmail drafts listget复核确认无误后gog gmail drafts send避免自动化直接外发。no-send 安全环境Agent 或脚本即便处于--gmail-no-send或账户 no-send 保护下仍可安全地「拟稿不发出」需要发送时再走带发送门控的命令。批量转发前的预检配合--dry-run --json在不发起任何 API 请求的前提下验证收件人解析结果与引言内容特别适合需要精确控制收件人列表的场景。更多草稿操作可参考父命令文档 gog gmail drafts 与命令索引 docs/commands/README.md。【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

C8051F300驱动ADF4350:从SPI配置到无输出故障排查

C8051F300驱动ADF4350:从SPI配置到无输出故障排查

简介:面向电子工程师与单片机开发者的ADF4350频率合成器控制资源包,聚焦C8051F300驱动ADF4350实现精准频率输出,并针对常见的“ADF4350无输出”故障给出排查方向。资源共22个文件,压缩后仅55KB,包含完整Keil工程&#…

📅 2026/9/17 2:00:41
2024数学建模国赛C题:贪心算法与整数规划优化农作物种植策略

2024数学建模国赛C题:贪心算法与整数规划优化农作物种植策略

简介:2024年数学建模国赛C题获省一等奖作品,围绕农作物种植策略优化问题,基于贪心算法构建了从数据处理、策略建模到结果输出的完整方案。资源共296个文件,压缩包12.51MB,包含231个json文件用于保存中间结果与最终数据…

📅 2026/9/17 2:00:41
储能BMS三级架构详解:从BMU到BAU的分工与保护配合

储能BMS三级架构详解:从BMU到BAU的分工与保护配合

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/17 2:00:41
MORE NEWS

更多资讯

📰

PLC工程师真实成长路径:从接线到独立负责产线技改

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

堆排序手写指南:从完全二叉树到优先队列的底层原理

1. 为什么排序算法这么多,我偏偏觉得堆排序最值得手写一遍如果要把排序算法按“出镜率”排个队,堆排序绝对不会是出场次数最多的那个,但它绝对是最值得手推一遍的算法之一。原因很简单:它把“树形结构”和“数组”这两件事焊在了一…

📰

SpringBoot+Vue月度员工绩效考核管理系统开发实战

先说说我为什么对这个项目这么有感触。做开发这些年,我陆陆续续带过不少实习生,也帮人看过一堆毕设代码。说句实在话,大部分学生做的“管理系统”,本质上是把数据库里的数据搬到页面上,做一个带增删改查的壳子。但“Sp…

📰

Go服务内存异常排查:透明大页THP如何导致RSS虚高与延迟抖动

先说一个我排查过的典型场景,希望大家少走弯路:一个Go微服务,内存RSS莫名其妙从几百MB一路涨到几个GB,业务看起来没泄漏,pprof Heap也显示只用了400MB,但进程占用的物理内存在飙升,怀疑了一圈都…

📰

MAVLink、PPM、SBUS协议详解:无人机遥控与数据链路的区别与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Colibri:专为MoE模型设计的纯C推理引擎

1. 项目概述:Colibri 不是蜂鸟,而是一台为 MoE 模型量身定制的 C 语言推理引擎“Colibri”这个词在中文语境里常让人联想到南美洲那些翅膀扇动频率高达每秒80次的蜂鸟——轻盈、敏捷、能量密度惊人。但放在当前 AI 推理工程的语境下,它指的是…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬