使用2封电子邮件和信用卡在Rails中发送电子邮件

时间:2016-05-23 07:05:36

标签: ruby-on-rails ruby ruby-on-rails-4

我在productiondevelopment环境中使用电子邮件和密码,工作正常。

ActionMailer::Base.smtp_settings = {
  :user_name => 'abc@gmail.com',
  :password => '******',
  :domain => 'gmail.com',
  :address => 'smtp.gmail.com',
  :port => 587,
  :authentication => :plain 
}

现在我想在productiondevelopment使用两封不同的电子邮件发送电子邮件。目前我正在使用' abc@gmail.com' ,但我想动态更改此内容,这是否可以在rails中使用?

2 个答案:

答案 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会在发送大量邮件后阻止发送邮件。