Проблемы разработки электронной почты AMP в Ruby на Rails - PullRequest
5 голосов
/ 07 февраля 2020

Я пытаюсь (и не могу) настроить приложение Ruby на Rails с ActionMailer для отправки электронного письма AMP. В поисках каких-либо советов о дальнейшей отладке, как сейчас, я не знаю, что еще делать!

Образец шаблона AMP работает при отправке с AMP Gmail Playground однако при отправке Пример из нашего Rails-приложения: AMP-версия не отображается в Gmail.

В config/initializers/mime_types.rb Я добавил:

Mime::Type.register 'text/x-amp-html', :amp

Разметка AMP находится в файле с именем app/views/reminder_mailer/foo_notification.amp.erb. Для тестирования мой почтовый метод выглядит следующим образом:

def foo_notification
  mail(to: 'foo@example.com', subject: 'Foo subject') do |format|
    format.amp
    format.text
    format.html
  end
end

Вывод из моей консоли Rails показывает, что почта правильно отправлена ​​с Content-Type: multipart/alternative, за которым следует Content-Type: text/x-amp-html. Полный вывод приведен ниже.

ReminderMailer#foo_notification: processed outbound mail in 19.9ms

Sent mail to foo@example.com (625.2ms)
Date: Thu, 06 Feb 2020 16:47:56 -0800
From: example <notifier@example.com>
Reply-To: example <notifier@example.com>
To: foo@example.com
Message-ID: <5e3cb3bc74b91_2cd13ff4e08417cc34068@Chris-MacBook-Pro.local.mail>
Subject: Test AMP email 62
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_5e3cb3bc73df1_2cd13ff4e08417cc339b3";
 charset=UTF-8
Content-Transfer-Encoding: 7bit


----==_mimepart_5e3cb3bc73df1_2cd13ff4e08417cc339b3
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

Plain text.
----==_mimepart_5e3cb3bc73df1_2cd13ff4e08417cc339b3
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

<h1>Foo HTML content</h1>
<div>Hey yo this is the HTML.</div>
----==_mimepart_5e3cb3bc73df1_2cd13ff4e08417cc339b3
Content-Type: text/x-amp-html;
 charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<!--=0D
     Below is the mininum valid AMP4EMAIL document. Just type away=0D
     here and the AMP Validator will re-check your document on the fly.=0D=

-->=0D
<!doctype html>=0D
<html =E2=9A=A14email>=0D
<head>=0D
  <meta charset=3D"utf-8">=0D
  <script async src=3D"https://cdn.ampproject.org/v0.js"></script>=0D
  <style amp4email-boilerplate>body{visibility:hidden}</style>=0D
</head>=0D
<body>=0D
  Hello, AMP4EMAIL world.=0D
</body>=0D
</html>=

----==_mimepart_5e3cb3bc73df1_2cd13ff4e08417cc339b3--

Наконец, я использовал API Gmail для проверки полного содержимого сообщения. Есть несколько различий между успешной игровой площадкой AMP и неудачной AMP от Rails. Например, значение для "name": "ARC-Authentication-Results" по-разному отображается между двумя. Кроме того, электронная почта AMP для игровых площадок включала в себя следующие атрибуты, которых не было в неудачных электронных письмах AMP:

{
  "name": "X-Google-DKIM-Signature",
  "value": ...
 },
 {
  "name": "X-Gm-Message-State",
  "value": ...
 },
 {
  "name": "X-Google-Smtp-Source",
  "value": ...
 },
 {
  "name": "X-Received",
  "value": ...
 },
 {
  "name": "X-Google-Appengine-App-Id",
  "value": "s~dynamic-mail-playground"
 },
 {
  "name": "X-Google-Appengine-App-Id-Alias",
  "value": "dynamic-mail-playground"
 },

1 Ответ

3 голосов
/ 08 февраля 2020

Письма AMP работают только после прохождения аутентификации DKIM и SPF. Таким образом, вам нужен действующий домен и приложение, работающее на сервере. Это абсолютно необходимо для работы. Это означает, что вы не можете проверить его на своем локальном хосте (по крайней мере, у меня это не сработало).

Еще один параметр, который стоит отметить в ApplicationMailer, - установить: parts_order, например:

default from: "abcd@example.com",
        parts_order: [ 'text/plain', 'text/enriched', 'text/x-amp-html', 'text/html' ]

Если parts_order не установлен таким образом, то некоторые почтовые клиенты, такие как Mail, Outlook будут отображать в выводе теги amp, которые по умолчанию отображают последний фрагмент электронной почты.

Я создал сообщение в блоге об электронных письмах AMP в Ruby на рельсах здесь .

...