簡體   English   中英

Rails:在動作郵件中更改默認發件人

[英]Rails: change default sender in action mailer

我在rails應用程序中使用動作郵件發送電子郵件。 但它只允許一個默認發件人。 這是我的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 
 }

我猜,我不應該在這里改變任何東西。

您可以將其作為參數傳遞給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,它允許多發送者支持。

這是我使用的,它允許使“標題”不同。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM