2013-07-04 37 views
7

在用戶模型中,每個用戶都屬於不同的域/主機。我想根據用戶的域名將其設置爲與地址不同。我可以在用戶模型中設置此地址,或者如何根據用戶的域名讓發件人地址爲動態地址。動態設計發件人電子郵件地址

我們設置app/config/initializer/devise.rb

Devise.setup do |config| 
    config.mailer_sender = SOME EMAIL ADDRESS 
end 

回答

1

你可以設置每封郵件的基礎

class UserMailer <ActionMailer::Base 

def notification_email(user) 
    mail(to:[email protected], from:user.email, ...) 
end 

這將覆蓋默認設置mail.from制定默認的發件人地址。

我想你可以更改配置/初始化/ devise.rb

# Configure the class responsible to send e-mails. 
    # config.mailer = "Devise::Mailer" 
    config.mailer = "UserMailer" 

此設置自定義郵件。

+0

如果我打算設計內置電子郵件發送功能「忘記密碼」或「更改密碼」。我可以在用戶主機的基礎上設置發件人電子郵件地址設置?上面提到的例子將如何幫助和工作。你能解釋一下嗎? – Kashif

+0

我編輯我的答案上面,檢查設計文件,它應該很容易做到。 – Henry

+0

也檢查這篇文章[鏈接](http://stackoverflow.com/questions/5679571/how-can-i-customize-devise-to-send-password-reset-emails-using-postmark-mailer) – Henry

2

要通過設計使用梅勒輔助功能,擴展了色器件郵件,並覆蓋方法/郵件需要不同的動態發件人:

class CustomDeviseMailer < Devise::Mailer 
    def confirmation_instructions(record, token, opts={}) 
    @token = token 
    opts[:from] = "Dynamic Sender <[email protected]>" 
    devise_mail(record, :confirmation_instructions, opts) 
    end 
end 

而且在你devise.rb配置它:

config.mailer = "CustomDeviseMailer" 

注意:如果您不需要動態發件人,只需在devise.rb中定義發件人:

config.mailer_sender = "Static sender <[email protected]>" 
7

我遇到了這個問題,因爲我想從I18n中抽取from地址,但初始化程序在I18n安裝之前運行。這對我來說是最簡單的解決方案:

config.mailer_sender = Proc.new { I18n.t('mailers.from') } 
+0

謝謝!這正是我爲什麼也在尋找它的原因。 –

相關問題