我在production
和development
环境中使用电子邮件和密码,工作正常。
ActionMailer::Base.smtp_settings = {
:user_name => 'abc@gmail.com',
:password => '******',
:domain => 'gmail.com',
:address => 'smtp.gmail.com',
:port => 587,
:authentication => :plain
}
现在我想在production
和development
使用两封不同的电子邮件发送电子邮件。目前我正在使用' abc@gmail.com' ,但我想动态更改此内容,这是否可以在rails中使用?
答案 0 :(得分:2)
你不应该只有一个简单的if和2个版本的凭证吗?喜欢
if Rails.env.production?
ActionMailer::Base.smtp_settings = {
:user_name => 'abc@gmail.com',
:password => '******',
:domain => 'gmail.com',
:address => 'smtp.gmail.com',
:port => 587,
:authentication => :plain
}
else
<other credentials>
end
如果您想动态更改凭据,则必须有办法存储和加载设置。我会创建一个映射到smtp_settings的模型,这样你就可以调用ActionMailer::Base.smpt_settings = mail_settings
或者你想调用它。然后你只需要在发送电子邮件之前调用它,并拥有一个保存不同凭据集的管理页面。
答案 1 :(得分:1)
您可以在邮件中设置from
地址。您可以更改代码以将邮件发送到下面给出的内容。
mail(
from: "<your dynamically set mail id here>"
to: "<xyz@gmail.com>",
subject: "Mail subject"
)
另外,我建议您使用SMTP服务,例如 Sendgrid / AWS SNS 。 Gmail会在发送大量邮件后阻止发送邮件。