如何在我的 Angular5 应用程序中发送带有附件的电子邮件(gmail)?

Posted

技术标签:

【中文标题】如何在我的 Angular5 应用程序中发送带有附件的电子邮件(gmail)?【英文标题】:How do i send email(gmail) with attachment within my Angular5 application? 【发布时间】:2019-02-19 13:26:01 【问题描述】:

我正在尝试从 Angular5 应用程序发送带有附件的电子邮件。我的应用程序在没有附件的情况下运行良好。我正在调用 gmail api (https://www.googleapis.com/gmail/v1/users/userId/messages/send) 并在 FormGroup 中传递给、来自、主题、消息(base64 编码)。现在,我想随消息一起发送一个文件。我正在尝试使用https://www.googleapis.com/upload/gmail/v1/users/userId/messages/send?uploadType=multipart,但在如何将数据发送到 api 调用方面遇到了困难。 Gmail api 文档说输入必须是 message/rfc822 格式。我尝试将 .eml 文件发送到 api 调用并在邮递员中检查响应,但我收到错误提示 badcontetn,这可能是因为我只是使用了一个内容未编码的示例 .eml 文件。我在这里很震惊,不知道如何继续前进..我该如何让它工作?如何将用户输入的详细信息和附件转换为 .eml 文件?有没有其他方法可以完成这项工作?

【问题讨论】:

请edit 成为主题的问题:包括一个重复问题的Minimal, Complete, and Verifiable example。寻求调试帮助的问题(“为什么这段代码没有按我想要的方式工作?”)必须包括:(1)期望的行为,(2)特定的问题或错误,以及(3)重现它所需的最短代码问题本身。另请参阅:What topics can I ask about here? 和 How to Ask 【参考方案1】:

我找不到确切的解决方案,但我找到了一种解决方法。我没有使用 /upload/gmail/v1/users/userId/messages/send 作为文件附件,而是使用 /gmail/v1/users/userId/messages/send api url,它通常用于不带附件的电子邮件。我发送请求正文的格式是

--foo_bar_baz 内容类型:message/rfc822 至:surimallabharat@gmail.com 主题:测试主题

这是测试文本 --foo_bar_baz 内容类型:img/png 内容处置:附件 文件名="图片.png" iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAABGdBTUEAAK / INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAA + SURBVHjaYvzPgAD / UNlYEUAAmuTYBgAYhIEgJJmboZgtHbaJKNK8TvozM8LIllwagEY4sIFV1UD / 3swngMAaGBn / P3kCVApS7ebG8O / F / X07 / N / 6BFL36 / F / 37 / + // oFZDPKygJtAAggkIb / YINBqqOjGUxNQeqUlf93dIDV / QLpAWtg + P0bqAEggJhA7gaqBtqoqMjg5PR / + VT /太阳/ N2z4 // XR / + XL // Pwgu2BWgJUCxBATCAn / fgJEnVx / Q + 05NgxkNzp0 / 9XrPgvJPR / ZZR / ZmZQDX / + AE0HCCCQhv9 // 4D89OQxMMT + a2uDnKGm9v / SJZCrHj36v28fRAPESQABxALEjGBLGRYv / S / H97 + oCOQYIIiM / P / LY / 9Fi6CO + QMy9A8DA0AAgTQwg4MMaMD / rq7 / VR7 / WVlBrv / 8GeROiAf + ADWAQgXoHIAAAmlg + v + fQVISbMxfhpMngToZhYUZ +PkZwAaDEDgMgQioGCCAGL+iRiSeOIYAgAADAO/XO1xGA79vAAAAElFTkSuQmCC --foo_bar_baz--

我已将上述正文编码为 base64,并根据需要将 + 替换为 - 和 / 替换为 _。 对我来说效果很好。希望这至少可以暂时解决问题。

【讨论】:

以上是关于如何在我的 Angular5 应用程序中发送带有附件的电子邮件(gmail)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中使用带有服务帐户的 gmail api 或 google Oauth 来发送邮件?

如何使用带有mailchimp的python发送单个邮件

带有 Action 的 Angular 5 简单表单不起作用

ANGULAR Firebase FCM 发送成功但不可见

Angular 5 - 动态组件模板加载

google protobuf-js:如何有效地解析我的消息