2013-07-04 45 views
7

Trong mô hình Người dùng, mỗi người dùng thuộc về miền/máy chủ lưu trữ khác nhau. Tôi muốn đặt nó khác với địa chỉ trên cơ sở tên miền của người dùng. Tôi có thể đặt điều này trong Mô hình người dùng ở đâu đó hay làm cách nào để làm cho người gửi địa chỉ động theo miền của người dùng.Địa chỉ email người gửi động Devise

Chúng tôi thiết nghĩ ra địa chỉ người gửi mặc định trong app/config/initializer/devise.rb như

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

Trả lời

1

bạn có thể đặt mail.from mỗi cơ sở email

class UserMailer <ActionMailer::Base 

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

Điều đó sẽ ghi đè lên các thiết lập mặc định của bạn.

Tôi nghĩ bạn có thể thay đổi cài đặt này trong config/initializers/devise.rb

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

để bưu phẩm tùy chỉnh của bạn.

+0

nếu tôi gọi đưa ra built-in email gửi các chức năng để "Quên mật khẩu của bạn" hay "thay đổi mật khẩu của bạn". nơi tôi có thể đặt cài đặt địa chỉ email người gửi trên cơ sở người dùng lưu trữ? Làm thế nào có thể ví dụ trên sẽ giúp và làm việc. bạn có thể giải thích dùm không ? – Kashif

+0

i chỉnh sửa câu trả lời của tôi ở trên, kiểm tra tài liệu phát triển, nó phải được khá dễ dàng để làm. – Henry

+0

cũng kiểm tra bài đăng này [link] (http://stackoverflow.com/questions/5679571/how-can-i-customize-devise-to-send-password-reset-emails-using-postmark-mailer) – Henry

2

Để sử dụng các chức năng helper Mailer bởi lập mưu, kéo dài tuổi bưu phẩm devise, và ghi đè lên các phương pháp/mail mà cần một người gửi năng động khác nhau:

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 

Và cấu hình nó trong bạn devise.rb:

config.mailer = "CustomDeviseMailer" 

Lưu ý: Nếu bạn không cần người gửi động, chỉ cần xác định người gửi trong devise.rb:

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

Tôi gặp phải vấn đề này vì tôi muốn kéo địa chỉ from từ I18n, nhưng trình khởi chạy đã chạy trước khi I18n được thiết lập. Đây là giải pháp đơn giản nhất đối với tôi:

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

Cảm ơn bạn! Đây chính là lý do tại sao tôi cũng đang tìm kiếm nó. –

Các vấn đề liên quan