MailGun + 设计 + Rails = "uninitialized constant MyMailer::MailGun"?
MailGun + Devise + Rails = "uninitialized constant MyMailer::MailGun"?
我正在使用 Devise 进行身份验证并使用 mailgun-ruby gem 发送电子邮件,但我很难弄清楚如何使 Devise 的默认邮件程序 class 与 Mailgun 一起工作。根据 mailgun 文档,我已将 production.rb 文件配置为使用 mailgun 设置:
config.action_mailer.delivery_method = :mailgun
config.action_mailer.mailgun_settings = {
api_key: ENV['MAILGUN_API_KEY'],
domain: 'mail.mywebsite.com'
}
然后在我的邮件程序 class 中,我需要 gem 并实例化一个 Mailgun::Client
object.
class MyMailer < Devise::Mailer
require 'mailgun-ruby'
helper :application
include Devise::Controllers::UrlHelpers
default template_path: 'users/mailer'
def confirmation_instructions(record, token, opts={})
mg_client = MailGun::Client.new
message_params = {
from: "me@mywebsite.com",
to: record.email,
subject: "Please confirm your account"
}
mg_client.send_message message_params
super
end
end
我在 devise.rb 初始化器中注释掉了 config.mailer = 'MyMailer'
行,但出于某种原因,Rails 正在寻找 MailGun 作为MyMailer 的子class。为什么是这样?错误在标题中 - uninitialized constant MyMailer::MailGun
.
看起来你的代码中有拼写问题
mg_client = MailGun::Client.new
应该是
mg_client = Mailgun::Client.new
我正在使用 Devise 进行身份验证并使用 mailgun-ruby gem 发送电子邮件,但我很难弄清楚如何使 Devise 的默认邮件程序 class 与 Mailgun 一起工作。根据 mailgun 文档,我已将 production.rb 文件配置为使用 mailgun 设置:
config.action_mailer.delivery_method = :mailgun
config.action_mailer.mailgun_settings = {
api_key: ENV['MAILGUN_API_KEY'],
domain: 'mail.mywebsite.com'
}
然后在我的邮件程序 class 中,我需要 gem 并实例化一个 Mailgun::Client
object.
class MyMailer < Devise::Mailer
require 'mailgun-ruby'
helper :application
include Devise::Controllers::UrlHelpers
default template_path: 'users/mailer'
def confirmation_instructions(record, token, opts={})
mg_client = MailGun::Client.new
message_params = {
from: "me@mywebsite.com",
to: record.email,
subject: "Please confirm your account"
}
mg_client.send_message message_params
super
end
end
我在 devise.rb 初始化器中注释掉了 config.mailer = 'MyMailer'
行,但出于某种原因,Rails 正在寻找 MailGun 作为MyMailer 的子class。为什么是这样?错误在标题中 - uninitialized constant MyMailer::MailGun
.
看起来你的代码中有拼写问题
mg_client = MailGun::Client.new
应该是
mg_client = Mailgun::Client.new