Отправка электронных писем с помощью Google Markup в приложении Rails

Я пытаюсь настроить разметку электронной почты Gmail, но не могу проверить ее в своем Рельс приложение.

Чтобы проверить это, я изменил настройки SMTP ActionMailer следующим образом:

# config/environments/development.rb
config.action_mailer.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => 587,
    :domain => 'gmail.com',
    :user_name => '[email protected]',
    :password => '[REDACTED]',
    :authentication => 'plain',
    :enable_starttls_auto => true
}

My Mailer устанавливает адреса по умолчанию from и to и определяет метод mail_action следующим образом:

# app/mailers/test_mailer.rb
class TestMailer < ActionMailer::Base
  default from: "[email protected]"
  default to:   "[email protected]"

  def mail_action
    @data = confirm_action

    mail subject: "Mail action"
  end

  def confirm_action
    {
      "@context" => "http://schema.org",
      "@type" => "EmailMessage",
      "action" => {
        "@type" => "ConfirmAction",
        "name" => "Confirm registration",
        "handler" => {
          "@type" => "HttpActionHandler",
          "url" => "http://google.fr",
        },
      },
    }
  end
end

Метод confirm_action определяет разметку для моего действия в соответствии с документацией Google.

В представлении для метода mail_action я добавляю разметку в <head>:

# app/views/test_mailer/mail_action.html.haml
!!! Strict
%html
  %head
    %title Mail Action

    = content_tag :script, type: 'application/ld+json' do
      = JSON.generate(@data).html_safe

  %body
    %h1 Mail Action
    %pre
      = JSON.generate(@data).html_safe

Я просто отправляю электронное письмо из консоли Rails, используя TestMailer.mail_action.deliver. В полученном электронном письме я четко вижу разметку, однако кнопки действия здесь нет:

Return-Path: <[email protected]>
Received: from gmail.com ([REDACTED IP ADDRESS])
        by mx.google.com with ESMTPSA id qg11sm20491658wic.17.2014.12.17.03.07.30
        for <[email protected]>
        (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Wed, 17 Dec 2014 03:07:36 -0800 (PST)
Date: Wed, 17 Dec 2014 12:07:29 +0100
From: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: Mail action
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

<!DOCTYPE html>
<html>
  <head>
    <title>Mail Action</title>
    <script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ConfirmAction","name":"Confirm registration","handler":{"@type":"HttpActionHandler","url":"http://google.fr"}}}
    </script>
  </head>
  <body>
    <h1>Mail Action</h1>
    <pre>{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ConfirmAction","name":"Confirm registration","handler":{"@type":"HttpActionHandler","url":"http://google.fr"}}}</pre>
  </body>
</html>

Входящие Gmail

Кто-нибудь знает, что я упускаю/делаю неправильно? Заранее спасибо !


person Aliou    schedule 17.12.2014    source источник


Ответы (1)


Чтобы отправлять тестовые электронные письма, даже себе, электронные письма должны быть подписаны с помощью DKIM/SPF, чтобы предотвратить спуфинг, как указано в этом вопросе: Невозможно протестировать дополнительные действия GMail

Вы можете протестировать отправку разметки и отправить письмо самому себе с помощью Apps Script. Когда разметка хорошо протестирована, вы можете зарегистрироваться в Google. Вот необходимая информация https://developers.google.com/gmail/markup/registering-with-google#registration_guidelines

person Gerardo    schedule 17.12.2014
comment
К сожалению, моя разметка генерируется в зависимости от контекста. Есть ли способ подписать электронные письма без использования скрипта приложений? - person Aliou; 17.12.2014
comment
Я нашел эту ссылку support.google.com/a/answer/ Надеюсь, это поможет вам - person Gerardo; 17.12.2014