我正在尝试使用设计在rails 4中使用动态电子邮件服务器设置重置密码。
my_mailer.rb
class MyMailer < Devise::Mailer
helper :application
include Devise::Controllers::UrlHelpers
default template_path: 'devise/mailer'
def reset_password_instructions(record, token, opts={})
# Has been dynamically set in the mailer_set_url_options of application_controller.rb
# opts[:host] = Setup.email_url
opts[:address] = Setup.email_address
opts[:port] = Setup.email_port
opts[:domain] = Setup.email_domain
opts[:from] = Setup.email_username
super
end
end
答案 0 :(得分:1)
首先根据截图
我认为您使用gmail
作为提供商。
请转到环境文件(development.rb
或production.rb
)。我猜你正在使用开发环境。
转到文件config/environments/development.rb
config.action_mailer.default_url_options = { :host => "my.website.com" }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'website.com',
user_name: 'user@website.com',
password: 'password',
authentication: 'plain',
enable_starttls_auto: true
}
请参阅ThisDoc。
希望它可以帮到你
答案 1 :(得分:0)
我没有使用 Devise,但在尝试动态更改我的应用程序邮件程序的 smtp_settings 时遇到了同样的错误。
在我的情况下,设置来自数据库。
我让它工作的方式是使用 after_action
的 ActionMailer
回调。并合并我的邮件投递方式的设置
这是一个例子:
after_action do
self.delivery_method = SETTING_FROM_DB.delivery_method
settings = {
address: SETTING_FROM_DB.address,
port: SETTING_FROM_DB.port
# More setting if needed
}
self.mail.delivery_method.settings.merge! settings
end