5

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

class UserMailer < ActionMailer::Base
 default :from => "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 < ActionMailer::Base
 def welcome_email(user, order)
@user = user
    @order = order
    mail(:to => 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 
 }

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

4

4 回答 4

7

You can pass it as a parameter to the mail method:

def new_mail
  mail from: "example@example.com", to: "user@example.com"
end
于 2013-05-31T14:53:48.840 回答
2

我认为您想使用 for-each 操作的三封不同电子邮件发送邮件。因为您使用 gmail,所以您需要Sending mail from a different address

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

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

使用 Rails 发送电子邮件

于 2013-05-31T17:05:13.013 回答
2

我发现,这不能使用 smtp 来完成。需要使用允许多发件人支持的亚马逊 SES。

于 2013-06-01T08:25:40.697 回答
-1

这是我使用的,它允许使“标题”不同。

class UserMailer < ActionMailer::Base
      default :from => '"example" <example@domain.com>'

      def send_signup_email(user)
        @user = user
        mail(to: @user.email, subject: 'example')
      end
    end
于 2018-12-04T17:00:13.783 回答