3

我试图弄清楚如何设置我的 Rails 4 应用程序,以便设计邮件使用邮戳模板通过邮戳发送。

我的 gem 文件中有 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

接下来的步骤对我来说不太清楚。有没有人想出如何使用邮戳模板作为邮件来设计交易电子邮件?

4

2 回答 2

3

Postmark 服务台的回应是:不幸的是,Postmark 模板不能很好地融入传统的 Rails 生态系统。请参阅我的回复以获取更多详细信息:

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

总而言之,通过将 Postmark API 与 Postmark 模板一起使用,您可能会替换 ActionMailer,但是将它们混合在一起会带来很大的挑战。不幸的是,我们从未尝试过使用 Devise 的“无 ActionMailer”方法,所以在这里我无法为您提供帮助。除非您有充分的理由不这样做,否则我建议您使用 ActionMailer 模板并使用 postmark-rails gem 作为传递适配器。众所周知,这种方法可以很好地与 Devise 配合使用。请让我知道,如果你有任何问题。

于 2016-05-06T01:15:15.317 回答
2

你需要做的第一件事是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 服务器,然后试一试!

我希望这可以帮助您将邮戳模板 (API) 挂接到设计邮件中

于 2020-07-18T19:29:20.630 回答