使用 nodemailer 发送 AMP 邮件

Use nodemailer to send AMP email

我最近开始了解 AMP 电子邮件并发现它很有趣,并在 nodejs 中使用 nodemailer 包尝试了一个示例。

此程序包已包含一个选项 'amp' 以发送特定于 AMP 的电子邮件,但我无法使其正常工作。

AMP 版本的电子邮件非常简单,不包含任何 xhr 请求。 下面是我的代码,它向特定的电子邮件地址发送电子邮件。

  let transporter = nodeMailer.createTransport({
    host: 'smtp.gmail.com',
    port: 465,
    secure: true,
    auth: {
      user: "validuser@gsuiteBusinessdomain.com",
      pass: "validpassword"
  },
  });

  let mailOptions = {
    from: 'sender@gsuiteBusinessdomain.com', // sender address
    to: "enduser@gsuiteBusinessdomain.com", // list of receivers
    subject: "test subject", // Subject line
    text: " basic text body example ", // plain text body
    html: '<b>basic html body example</b>', // html body
    amp: `<!--
        Below is the mininum valid AMP4EMAIL document. Just type away
        here and the AMP Validator will re-check your document on the fly.
   -->
   <!doctype html>
   <html ⚡4email>
   <head>
     <meta charset="utf-8">
     <script async src="https://cdn.ampproject.org/v0.js"></script>
     <style amp4email-boilerplate>body{visibility:hidden}</style>
   </head>
   <body>
     Hello, AMP4EMAIL world.
   </body>
   </html>`
  };

  transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
      console.log(error);
    }
    console.log('Message %s sent: %s', info.messageId, info.response);
  });

此外,我尝试在 C# 中使用 "MailKit" 包,但不确定如何在此处设置 AMP 版本。我在 message.body 部分下添加了我的 AMP 版本 MimeMessage class.

 message.Body = new TextPart(TextFormat.RichText)
            {
                Text = @"<!-- ........

我确信我遗漏了一些非常小的东西,但无法弄清楚。 有人可以看看并指导我上面的代码出了什么问题吗?

AMP 不是 RichText,它是 HTML,带有一个特殊的 Content-Type,是 multipart/alternative.

的一部分

我会推荐阅读 https://amp.dev/documentation/guides-and-tutorials/learn/amp-email-format

要在 MimeKit/MailKit 中发送 AMP,您可以这样做:

var alternative = new MultipartAlternative ();
alternative.Add (new TextPart ("plain") {
    Text = "This is the plain-text message body."
});

// Note: Some email clients[1] will only render the last MIME part, so we
// recommend placing the text/x-amp-html MIME part before the text/html
// MIME part.
alternative.Add (new TextPart ("x-amp-html") {
    Text = @"<!--
    Below is the minimum valid AMP4EMAIL document. Just type away
    here and the AMP Validator will re-check your document on the fly.
-->
<!doctype html>
<html ⚡4email>
<head>
  <meta charset=""utf-8"">
  <script async src=""https://cdn.ampproject.org/v0.js""></script>
  <style amp4email-boilerplate>body{visibility:hidden}</style>
</head>
<body>
  Hello, AMP4EMAIL world.
</body>
</html>"
});

alternative.Add (new TextPart ("html") {
    Text = "This is the <b>html</b> message body."
});

message.Body = alternative;

希望对您有所帮助。