Google Apps Script(Gmail服务)能否将邮件作为附件转发?
能力判定
Google Apps Script 完全支持将当前查看的Gmail邮件以附件形式转发,不受默认常规转发逻辑的限制,也能完美适配onGmailMessageOpen这类Gmail上下文触发的自动执行场景。
核心实现逻辑
- 内置的
GmailMessage.forward()方法默认的转发逻辑,是把原邮件的正文、附件直接嵌入新邮件的正文区域,和“整封原邮件作为独立附件转发”的需求不匹配。 - 要实现附件式转发,核心操作是先提取原邮件的标准原始EML格式内容,再将其打包为合规的邮件格式附件,挂载到新的发送邮件中完成投递。
适配场景的可直接复用代码
function onGmailMessageOpen(e) { // 获取当前打开的目标邮件实例 const targetMail = GmailApp.getMessageById(e.messageMetadata.messageId); // 提取原邮件的全量原始EML格式内容 const rawMailContent = targetMail.getRawContent(); // 构造带附件的转发邮件完成发送 GmailApp.sendEmail( "abc@def.com", // 目标收件人 `[附件转发] ${targetMail.getSubject()}`, // 自定义邮件主题 "原邮件已作为附件随本邮件发出", // 自定义邮件正文 { attachments: [ Utilities.newBlob( rawMailContent, "message/rfc822", `${targetMail.getSubject()}.eml` ) ] } ); }
落地注意事项
- 上述代码生成的EML附件,和Gmail客户端原生“将邮件作为附件转发”的效果完全一致,接收方可以直接通过各类邮件客户端打开附件,查看全量原邮件信息,包括收发件人记录、正文内容、内嵌附件。
- 首次运行脚本时需要按提示授予Gmail邮件读取、邮件发送的对应权限,否则上下文触发逻辑无法正常在后台执行。
- 该实现不会像默认的
forward()方法一样自动继承原邮件的抄送、密送收件人,如果需要同步转发给其他关联收件人,需要在sendEmail的配置参数中手动补充对应字段。
内容的提问来源于stack exchange,提问作者camden_kid
相关产品推荐
相关产品推荐

