gpt4 book ai didi

devise - 如何自定义设计以使用 PostMark 邮件程序发送密码重置电子邮件

转载 作者:行者123 更新时间:2023-12-03 13:31:02 25 4
gpt4 key购买 nike

我正在尝试使用 PostMarkApp 将我系统的所有电子邮件通知放在一个保护伞下。并利用 Rails gem( postmark-railspostmark-gemmail )。我已成功创建了一个邮件程序,用于处理发送购买收据,但我无法接收忘记密码的电子邮件。我的开发日志显示 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

我的 postman 使用邮戳
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 解决了它mailer 扩展 Devise::Mailer 并指定 Devise 使用我的通知程序作为 config/initializers/devise.rb 中的邮件程序

来自 config/initializers/devise.rb 的片段
# 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

最佳答案

使用最新版本的设计,上面的方法对我没有帮助。这是我的解决方案。

在 config/application.rb 中:

config.action_mailer.delivery_method   = :postmark
config.action_mailer.postmark_settings = { :api_key => "your-API-key-here" }

在 config/initializers/devise.rb 中:
config.mailer = "UserMailer" # UserMailer is my mailer class

在 app/mailers/user_mailer.rb 中:
class UserMailer < ActionMailer::Base
include Devise::Mailers::Helpers

default from: "default@mydomain.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

# you can then put any of your own methods here
end

最后,确保您已生成自定义设计 View
rails generate devise:views

并将电子邮件模板从 app/views/devise/mailer/移动到 app/views/user_mailer/
mv app/views/devise/mailer/* app/views/user_mailer/

关于devise - 如何自定义设计以使用 PostMark 邮件程序发送密码重置电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5679571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com