2

我正在尝试使用设计在 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

但是遇到同样的错误,可能是什么问题,任何帮助都会非常有帮助,谢谢:) 在此处输入图像描述

4

2 回答 2

2

首先按照截图

我认为您正在gmail用作提供者。

请转到环境文件(development.rbproduction.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

希望它可以帮助你

于 2016-03-29T07:02:09.643 回答
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
于 2021-06-09T15:56:34.430 回答