根据文档,使用动态传递选项发送电子邮件的工作原理是将新的传递选项哈希作为参数传递给 mail()
class UserMailer < ApplicationMailer
def welcome_email(user, company)
@user = user
@url = user_url(@user)
delivery_options = { user_name: company.smtp_user,
password: company.smtp_password,
address: company.smtp_host }
mail(to: @user.email,
subject: "Please see the Terms and Conditions attached",
delivery_method_options: delivery_options)
end
end
但是,邮件仍然使用环境配置文件中定义的默认传递选项发送,例如生产.rb或开发.rb:
config.action_mailer.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 587,
:domain => 'ourdomain.com',
:user_name => '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f692939097839a82b699838492999b979f98d895999b" rel="noreferrer noopener nofollow">[email protected]</a>',
:password => ENV['DEFAULT_PASSWORD'],
:authentication => 'login',
:enable_starttls_auto => true
}
rails 4。
有谁知道问题出在哪里吗?感谢您的帮助。
最佳答案
生成邮件后覆盖传送方式设置:
class UserMailer < ApplicationMailer
def welcome_email(user, company)
@user = user
@url = user_url(@user)
delivery_options = { user_name: company.smtp_user,
password: company.smtp_password,
address: company.smtp_host }
mail = mail(to: @user.email,
subject: "Please see the Terms and Conditions attached")
mail.delivery_method.settings.merge!(delivery_options)
end
end
关于ruby-on-rails - rails : Sending Emails with Dynamic Delivery Options is not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43072133/