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,它允许多发送者支持。