2012-07-04 22 views
8

Tôi thiết lập máy chủ thư Exchange tương thích trong một ứng dụng RoR. Tôi đã sử dụng các thiết lập sau đây trong development.rb:Sự khác nhau giữa config.action_mailer.smtp_settings và ActionMailer :: Base.smtp_settings trong Rails là gì?

config.action_mailer.smtp_settings = { 
    :address    => 'mail.server.com', 
    :port     => 5870, 
    :user_name   => 'username', 
    :password    => 'password', 
    :authentication  => :login 
} 

Thiết lập này không làm việc, tôi nhận được Net::SMTPAuthenticationError: 504 Unrecognized authentication type.

Tuy nhiên nếu tôi áp dụng cùng một cấu hình chính xác trong environment.rb, nó hoạt động một cách hoàn hảo:

ActionMailer::Base.smtp_settings = { 
    :address    => 'mail.server.com', 
    :port     => 5870, 
    :user_name   => 'username', 
    :password    => 'password', 
    :authentication  => :login 
} 

Tại sao điều này? Không nên config.action_mailer.smtp_settings đặt cùng cài đặt? Đây có phải là một lỗi? Nó có lý do gì không?

Tôi đã thử Gmail với tên là told herehoạt động, vì vậy smtp_settings không có hiệu lực đối với bưu phẩm, nhưng có vẻ như tôi không phải là tất cả các tùy chọn đếm/công việc.

Trả lời

4

config.action_mailer.smtp_settings chuyển tiếp cài đặt tới ActionMailer::Base.smtp_settings.

Tuy nhiên, sự khác biệt chính là trước đây là cài đặt dành riêng cho môi trường trong khi cài đặt thứ hai là cài đặt chung.

Nói cách khác, bạn nên đảm bảo đặt config.action_mailer.smtp_settings trong tệp môi trường thích hợp để áp dụng cài đặt. Ví dụ: nếu bạn muốn sử dụng cài đặt trong quá trình sản xuất, hãy thêm bài tập trong tệp config/environments/production.rb. Tương tự, nếu bạn muốn cài đặt được áp dụng cho toàn bộ dự án, hãy đặt chúng trong config/application.rb.

+1

Tôi thiết lập cấu hình cho chế độ phát triển trong 'development.rb' nhưng nó không chuyển tiếp cài đặt. Cả hai dường như không giống nhau - đây là câu hỏi của tôi. Bạn có nghĩa là đây là một lỗi? – andrasf

2

Tôi gặp sự cố tương tự, config.action_mailer.smtp_settings không hoạt động nhưng mọi cấu hình đều đúng.

Cuối cùng tôi đã tìm ra, rằng phần mở rộng Rails ghi đè ActionMailer :: Cài đặt cơ sở trong giai đoạn khởi tạo ... Vì vậy, hãy kiểm tra tất cả mã của bạn và tất cả mã bên thứ 3 (!), Tiện ích mở rộng, mô-đun, v.v .. nên là vấn đề!

+0

Tiện ích mở rộng nào đã ghi đè nó? Tôi đang gặp vấn đề tương tự. – Andrew

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