2013-07-04 5 views
7

W modelu użytkownika każdy użytkownik należy do innej domeny/hosta. Chcę ustawić, aby był inny niż adres na podstawie domeny użytkownika. Czy mogę ustawić to gdzieś w modelu użytkownika lub w jaki sposób mogę uczynić adresowanie dynamiczne według domeny użytkownika.Adres e-mail urządzenia Dynamic Devise Sender

Stawiamy opracować domyślny adres nadawcy w app/config/initializer/devise.rb jak

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

Odpowiedz

1

można ustawić mail.from za podstawę email

class UserMailer <ActionMailer::Base 

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

To będzie wyższy priorytet niż ustawienia domyślne.

myślę, że można to zmienić ustawienia w config/inicjalizatorów/devise.rb

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

dostosowanej do programu pocztowego.

+0

jeśli zadzwonię do devise wbudowane wiadomości e-mail wysyłające funkcje "Nie pamiętasz hasła" lub "zmieniaj swoje hasło". gdzie mogę ustawić ustawienie adresu e-mail nadawcy na podstawie hosta użytkownika? Jak powyższy przykład może pomóc i działać? czy możesz wyjaśnić? – Kashif

+0

Edytuję powyższą odpowiedź, sprawdzam, czy opracowuję dokumentację, powinno to być całkiem łatwe. – Henry

+0

również sprawdź ten wpis [link] (http://stackoverflow.com/questions/5679571/how-can-i-ustomize-devise-to-send-password-reset-emails-using-postmark-mailer) – Henry

2

Aby korzystać z funkcji pomocniczych Mailer przez opracowanie, rozszerzenie programu pocztowego opracować i zastąpić metody/maile, które potrzebują innego dynamiczny nadawcą:

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 

i skonfigurować go w was devise.rb:

config.mailer = "CustomDeviseMailer" 

Uwaga: Jeśli nie trzeba dynamiczny nadawcą, wystarczy zdefiniować nadawcę w devise.rb:

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

Wpadłem na to, ponieważ chciałem wyciągnąć adres from z I18n, ale inicjator był uruchomiony przed ustawieniem I18n. To było najprostsze rozwiązanie dla mnie:

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

Dziękujemy! Właśnie dlatego też tego szukałem. –