【发布时间】:2011-08-06 11:30:20
【问题描述】:
我正在尝试使用PostMarkApp 并利用Rails gem(postmark-rails、postmark-gem 和mail)将我系统的所有电子邮件通知集中在一个保护伞下。我已成功创建了一个邮件程序,用于处理发送购买收据,但我无法接收忘记密码的电子邮件。我的开发日志显示 Devise 发送了消息,但我的收件箱中没有收到任何电子邮件,并且 PostMark 积分没有减少。
让 Devise 的邮件通过我的 PostMark 帐户发送的最佳或最简单的方法是什么?
来自 config/environments/development.rb 的片段
config.action_mailer.delivery_method = :postmark
config.action_mailer.postmark_settings = { :api_key => "VALID_API_KEY_WAS_HERE" }
config.postmark_signature = VALID_POSTMARK_SIGNATURE_WAS_HERE
我的使用邮戳的邮件程序
class Notifier < ActionMailer::Base
# set some sensible defaults
default :from => MyApp::Application.config.postmark_signature
def receipt_message(order)
@order = order
@billing_address = order.convert_billing_address_to_hash(order.billing_address)
mail(:to => @order.user.email, :subject => "Your Order Receipt", :tag => 'order-receipt', :content_type => "text/html") do |format|
format.html
end
end
end
编辑:我的问题的解决方案如下
通过让我的 Notifier 邮件程序扩展 Devise::Mailer 并指定 Devise 使用我的通知程序作为 config/initializers/devise.rb 内的邮件程序解决了这个问题
来自 config/initializers/devise.rb 的 sn-p
# Configure the class responsible to send e-mails.
config.mailer = "Notifier"
我的通知邮件程序现在
class Notifier < Devise::Mailer
# set some sensible defaults
default :from => MyApp::Application.config.postmark_signature
# send a receipt of the Member's purchase
def receipt_message(order)
@order = order
@billing_address = order.convert_billing_address_to_hash(order.billing_address)
mail(:to => @order.user.email, :subject => "Your Order Receipt", :tag => 'order-receipt', :content_type => "text/html") do |format|
format.html
end
end
# send password reset instructions
def reset_password_instructions(user)
@resource = user
mail(:to => @resource.email, :subject => "Reset password instructions", :tag => 'password-reset', :content_type => "text/html") do |format|
format.html { render "devise/mailer/reset_password_instructions" }
end
end
end
【问题讨论】:
-
仅供参考,您可以(并且应该)将您的解决方案添加为答案,然后接受它。
标签: devise forgot-password ruby-on-rails-3 postmark