我正在尝试使用 gmail API 将我的第一封 AMP 电子邮件从我的 gmail 帐户发送给我自己(To === From)。我发送的消息与此处的 AMP 文档中提供的消息完全相同:https ://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-structure/ ,包括所有 Content-Type 标头多部分/替代消息。但是,当我使用我的 chrome gmail 客户端收到此消息时,我只看到后备 HTML 版本和带有错误的横幅:“为什么没有呈现动态内容?显示您的动态电子邮件时出错(INTERNAL_ERROR)。更多信息”。
附加信息:
- SPF、DKIM 和 DMARC 配置正确,如果我从我的域向某人发送电子邮件,则状态为 PASS。我的电子邮件服务提供商是谷歌。
- gmail 客户端中的开发人员设置已打开:“始终允许来自此发件人的动态电子邮件:”。
- 如果我从收件箱下载此消息作为 .eml 并将其导入到此处的 AMP 游乐场:https ://playground.amp.dev/?runtime=amp4email它成功导入且没有验证错误。我的电子邮件完全按照应有的方式打开 - 作为 AMP hello world 消息。
我使用 gmail API 发送消息并使用 js-base64 对其进行编码:
const gmail = google.gmail({ version: 'v1', auth: oauth2Client });
const base64EncodedEmail = Base64.encodeURI(email); const status = gmail.users.messages .send({ userId: mail_config.ADDRESS, uploadType: 'multipart', resource: { raw: base64EncodedEmail } })
以下代码中提供的消息本身(来自上述代码的电子邮件变量)。exampleBody 看起来很丑,我尝试使用 mimemessage npm 包来生成它以及相同的 INTERNAL_ERROR。这只是 AMP 电子邮件文档“原样”中的示例:https ://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-structure/
const exampleBody = `Content-Type: multipart/alternative; boundary="001a114634ac3555ae05525685ae"
--001a114634ac3555ae05525685ae
Content-Type: text/plain; charset="UTF-8"; format=flowed; delsp=yes
Hello World in plain text!
--001a114634ac3555ae05525685ae
Content-Type: text/x-amp-html; charset="UTF-8"
<!doctype html>
<html ⚡4email>
<head>
<meta charset="utf-8">
<style amp4email-boilerplate>body{visibility:hidden}</style>
<script async src="https://cdn.ampproject.org/v0.js"></script>
</head>
<body>
Hello World in AMP!
</body>
</html>
--001a114634ac3555ae05525685ae
Content-Type: text/html; charset="UTF-8"
<span>Hello World in HTML!</span>
--001a114634ac3555ae05525685ae--`;
const email =
'From: ' +
my_address +
'\r\nTo: ' +
my_address +
'\r\nSubject: ' +
subject +
'\r\n' +
exampleBody;
我在这里想念什么?请帮忙。