首页 > 解决方案 > 如何在我的 Angular5 应用程序中发送带有附件的电子邮件(gmail)?

问题描述

我正在尝试从 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 文件?还有其他方法可以使这项工作吗?

标签: typescriptangular5mime-typesgmail-apiemail-attachments

解决方案


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

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

This is the testing text --foo_bar_baz Content-Type: img/png Content-Disposition: attachment filename="image.png" iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAA+SURBVHjaYvzPgAD/UNlYEUAAmuTYBgAYhIEgJJmboZgtHbaJKNK8TvozM8LIllwagEY4sIFV1UD/3swngMAaGBn/P3kCVApS7ebG8O/f/x07/n/6BFL36/f/37 /+//oFZDPKygJtAAggkIb/YINBqqOjGUxNQeqUlf93dIDV/QLpAWtg+P0bqAEggJhA7gaqBtqoqMjg5PR/+vT/SUn/N2z4//Xr/+XL//Pwgu2BWgJUCxBATCAn/fgJEnVx/Q+05NgxkNzp0/9XrPgvJPR/zZr/ZmZQDX/+AE0HCCCQhv9//4D89OQxMMT+a2uDnKGm9v/SJZCrHj36v28fRAPESQABxALEjGBLGRYv/ s/H97+oCOQYIIIiM/P/ly/9Fi6CO+QMy9A8DA0AAgTQwg4MMaMD/rq7/vr7/WVlBrv/8GeROiAf+ADWAQgXoHIAAAmlg+v+fQVISbMxfhpMngToZhYUZ+PkZwAaDEDgMgQioGCCAGL+iRiSeOIYAgAADAFAO/XOQAAAxGA7

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


推荐阅读