我正试图弄清楚如何设置我的Rails 4应用程序,以便设计邮件程序使用Postmark模板通过Postmark发送。
我的gem文件中有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>
我已经将以下内容添加到我的初始值设定项/device.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
接下来的步骤我不太清楚。有人知道如何使用Postmark Templates作为设计交易电子邮件的邮寄程序吗?
您需要做的第一件事是在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
冲洗并重复解锁和密码邮件,所有你需要知道的是你将要发送令牌的网址。
要完成所有操作:
您需要在您的设备资源模型中添加一个小块,在本例中,我使用了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模板(API)挂钩到Devise mailers 中
Postmark服务台的回复是:不幸的是,Postmark模板不太适合传统的Rails生态系统。更多详细信息,请参阅我的回复:
https://github.com/wildbit/postmark-rails/issues/53
总而言之,通过将Postmark API与Postmark模板一起使用,您可能会取代ActionMailer,但将它们混合在一起会带来重大挑战。不幸的是,我们从未在Devise上尝试过"ActionMailer免费"的方法,所以我在这里帮不了你。除非你有充分的理由不这样做,否则我建议使用ActionMailer模板,并使用postmarkrails-gem作为传递适配器。众所周知,这种方法与Devise配合良好。如果你有任何问题,请告诉我。