Rails, Devise, Postmark Gem - использование шаблонов почтовых штемпелей для разработки почтовой программы

Я пытаюсь выяснить, как настроить приложение Rails 4, чтобы разработчик отправлял через Postmark, используя шаблоны Postmark.

У меня есть файл postmark-rails в моем файле gem.

У меня все работает, кроме как я не могу понять, как передать токен подтверждения в почтовый штемпель.

В Postmark у меня есть этот шаблон:

To get started, please confirm your account below:

action_url_Value

Я не могу понять, как поместить следующую строку в шаблон вместо значения URL действия:

<%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></div>

Я добавил следующее в мой инициализатор /devise.rb:

config.mailer = 'PostmarkDeviseMailer'

В postmark_devise_mailer.rb у меня есть:

class PostmarkDeviseMailer < ActionMailer::Base
  include Devise::Mailers::Helpers

  def message
    mail(
      :subject => 'Hello from Postmark',
      :to  => 'sender@address.com',
      :from => 'sender@address.comm',
      :html_body => '<strong>Hello</strong> dear Postmark user.',
      :track_opens => 'true')
  end
end


  default from: "sender@address.com"

  def confirmation_instructions(record)
    devise_mail(record, :confirmation_instructions)
  end

  def reset_password_instructions(record)
    devise_mail(record, :reset_password_instructions)
  end

  def unlock_instructions(record)
    devise_mail(record, :unlock_instructions)
  end

Следующие шаги мне менее понятны. Кто-нибудь выяснил, как использовать шаблоны почтовых марок в качестве почтовой программы для разработки электронных писем о транзакциях?

1 ответ

Первое, что вам нужно сделать, это создать собственный почтовый ящик в app/mailers в этом примере это user_mailer.rbЕсли вы читаете этот ответ, я предполагаю, что у вас обоих есть учетная запись почтового штемпеля, если не возьмите ее здесь: Регистрация почтового штемпеля, и я предполагаю, что у вас выбран шаблон и макет.

Один важный момент, который следует запомнить, - убедиться, что вы назначили псевдоним своему шаблону. Это можно найти по небольшой ссылке, расположенной над заголовком шаблона маленьким серым текстом.

Предметы внутри self.template_model настраиваются на 100% и отображаются в редакторах макета / шаблона следующим образом: {{product_name}}.

class UserMailer < Devise::Mailer
  include PostmarkRails::TemplatedMailerMixin

  helper :application
  include Rails.application.routes.url_helpers
  include Devise::Controllers::UrlHelpers

  default from: 'from_you@something.com'
  default reply_to: 'support@hammer-lane-industries.com' # Optional 

  def confirmation_instructions(record, token, opts={})
    @admin = record
    @token = token
    # this will pass the data via the postmark-api to your template / layout these fields are 100% customizable and can be cahnged in your template / layout
    self.template_model = { product_name: 'your product',
                            username: @user.username,
                            email: @user.email,
                            confirmation_url: user_confirmation_url(@resource, confirmation_token: @token, subdomain: 'add subdomain here if needed'),
                            login_url: login_root_url(subdomain: 'add subdomain here if needed'),
                            trial_length: '14-days',
                            sender_name: 'What ever you want',
                            action_url: user_confirmation_url(@resource, confirmation_token: @token, subdomain: 'add subdomain here if needed'),
                            parent_company_name: 'Your company name',
                            company_address: 'Your address'}
    mail to: @admin.email, postmark_template_alias: 'devise_user_confirmation'
  end
end

Промойте и повторите с разблокировками и почтовыми отправителями паролей, все, что вам нужно знать, это URL-адреса, на которые вы будете отправлять токены.

Чтобы закончить все это:

Вам нужно будет добавить небольшой блок в вашу модель ресурсов разработки, в этом примере я использовал user.rb

class User < ApplicationRecord
  devise :database_authenticatable, :confirmable,
         :recoverable, :rememberable, :validatable,
         :timeoutable, :trackable

  def devise_mailer
    UserMailer # Must match your mailer class
  end
end

Как только это будет сделано, перезапустите свой сервер rails и попробуйте!

Надеюсь, это поможет вам подключить шаблоны Postmark Templates (API) к почтовым программам Devise.

Ответ службы поддержки Postmark: К сожалению, шаблоны Postmark не вписываются в традиционную экосистему Rails. Смотрите мой ответ здесь для более подробной информации:

https://github.com/wildbit/postmark-rails/issues/53

Подводя итог, можно сказать, что с помощью API Postmark с шаблонами Postmark вы можете заменить ActionMailer, но смешивание их вместе представляет собой серьезную проблему. К сожалению, мы никогда не пробовали подход "без ActionMailer" с Devise, поэтому я не могу вам здесь помочь. Если у вас нет веских причин для этого, я бы предложил использовать шаблоны ActionMailer и использовать гем postmark-rails в качестве адаптера доставки. Известно, что этот подход хорошо работает с Devise. Пожалуйста, дай мне знать, если возникнут какие-либо вопросы.

Другие вопросы по тегам