Rails:在动作邮件中更改默认发件人

我在我的rails应用程序中使用动作邮件发送电子邮件。 但它只允许一个默认发件人。 这是我的UserMailer类:

class UserMailer  "example@example.com" def welcome_email(user, order) @user = user @order = order mail(:to => user.email, :subject => "Your Order") end def signup_email(user) @user = user mail(:to => user.email, :subject => "Thank you.") end def invite_confirm(curuser,usemail,post) @greeting = "Hi" @user = curuser @post = post mail(:to => user.email, :subject => "Hello") end end 

我试过这个:

 class UserMailer  user.email, :subject => "Your Order", :from => "abc@xyz.com") end def signup_email(user) @user = user mail(:to => user.email, :subject => "Thank you.", :from => "qwe@asd.com") end def invite_confirm(curuser,usemail,post) @greeting = "Hi" @user = curuser @post = post mail(:to => user.email, :subject => "Hello", :from => "zyx@asd.com") end end 

但它仍然是从“example@example.com”发送电子邮件

有没有办法为UserMailer类中编写的每个方法更改发件人? 我应该改变其他地方吗?

在config / environments / development.rb和config / environments / production.rb中,我有:

  config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => "587", :domain => "gmail.com", :authentication => "plain", :user_name => "example@example.com", :password => "example", :enable_starttls_auto => true } 

我想,我不应该在这里做任何改变。

您可以将其作为参数传递给mail方法:

 def new_mail mail from: "example@example.com", to: "user@example.com" end 

我想你想发送包含for-each动作的三封不同电子邮件的邮件。 因为您使用gmail,所以您需要从其他地址发送邮件 。

对于所有三种类型的电子邮件,没有一家供应商是最佳 你可能会使用几个供应商。

对于“公司电子邮件”,即向客户或业务伙伴发送个人电子邮件,您可能会使用Gmail或Google Apps for Business 。 对于单个地址,您可以设置一个Gmail帐户,以便从其他地址接收和发送电子邮件 。 更有可能的是,您需要为公司邮件提供多个电子邮件地址。 为此,请使用Google Apps for Business。

使用Rails发送电子邮件

我发现,使用smtp无法做到这一点。 需要使用亚马逊SES,它允许多发送者支持。