2012-03-01 3 views
10

모든 종류의 구성을 시도했지만 여전히 레일에서 내 개발 환경의 전자 메일을 보낼 수 없습니다.레일스 3 메일러가 작동하지 않고 오류가 기록되지 않습니다.

나는 명령 행에서 이것을 시험해보기 위해 mailutils를 설치했고 효과가 있었다. 나는 스팸 메일을 받았다. echo test |

# Don't care if the mailer can't send 
config.action_mailer.raise_delivery_errors = true # still no logs about emails 

config.action_mailer.delivery_method = :smtp 
config.action_mailer.perform_deliveries = true # I can't believe I have to add this option. Does it even exist? I found it on google. 
config.action_mailer.smtp_settings = { 
    :enable_starttls_auto => true, 
    :address => "smtp.gmail.com", 
    :port => 587, 
    :domain => "gmail.com", 
    :authentication => :login, 
    :user_name => "[email protected]", 
    :password => "abc123", 
} 

그리고 여기 메일러의 코드입니다 :

class UserMailer < ActionMailer::Base 
    default :from => "[email protected]" 

    def test_email 
    Rails.logger.debug 'test_email' 
    mail(:to => '[email protected]', :subject => "testing rails") 
    end 
end 

컨트롤러는 :

class PagesController < ApplicationController 
    def home 
    UserMailer.test_email 
    end 
end 

개발 메일

가 여기 내 설정의 주제 [email protected]에게 -s .log :

[2012-03-01 18:26:45.859] DEBUG [bb44dee806d73eb60ab3ae16297f5c02] [127.0.0.1] [GET] [http://myapp:3000/] test_email 
[2012-03-01 18:26:45.888] INFO [bb44dee806d73eb60ab3ae16297f5c02] [127.0.0.1] [GET] [http://myapp:3000/] Rendered user_mailer/test_email (1.6ms) 
[2012-03-01 18:26:45.898] INFO [bb44dee806d73eb60ab3ae16297f5c02] [127.0.0.1] [GET] [http://myapp:3000/] Rendered pages/home.html.erb within layouts/application (1.1ms) 
[2012-03-01 18:26:46.815] INFO [bb44dee806d73eb60ab3ae16297f5c02] [127.0.0.1] [GET] [http://myapp:3000/] Completed 200 OK in 455ms (Views: 112.4ms) 

는 또한 콘솔을 사용하여 시도 : 도메인 :

당신이 설정입니다 의심되는 경우
[email protected]:/srv/www/myapp# rails c 
Loading development environment (Rails 3.2.1) 
irb(main):001:0> UserMailer.test_email 
=> #<Mail::Message:32110400, Multipart: false, Headers: <To: [email protected]>, <Subject: testing rails>, <Mime-Version: 1.0>, <Content-Type: text/html>> 
+0

http://guides.rubyonrails.org/action_mailer_basics.html에는 GMail 구성에 대한 예제가 있습니다. 그것은 인증 특성에 'plain'을 사용합니다. 시도해 보셨습니까? – ismriv

+0

예. 시도했지만 아무 일도 없었습니다. 로그가 없으면 이것이 효과가 없을 것입니다. 요청의 다른 모든 항목이 올바르게 기록됩니다. – HappyDeveloper

+0

메일러를 호출하는 코드는 어떻게 생겼습니까? –

답변

27
UserMailer.test_email 

은 그냥 Mail::Message 개체를 만듭니다.

그냥 쾅 방법 대응을 위해 존재한다는 것을 땜질에 의해 파악 : 실제로 당신이

+14

좋습니다. 부끄럽습니다. 감사합니다. – HappyDeveloper

+0

Ow My God! 나는 3 시간을 보냈고,이 방법을 완전히 잊었다! 감사합니다. – 0bserver07

+1

레일 5에 대한 참고 사항 : DEPRECATION 경고 :'# deliver'은 더 이상 사용되지 않으며 레일 5에서 제거 될 것입니다.'# deliver_now'를 사용하십시오 – jtlindsey

0

의를 복용하려고합니다. 그것은 얼마 전 나에게 도움이되었다. (Net::SMTPAuthenticationError in rails 3.1.0.rc5 when connecting to gmail)

그러나 mail 함수에 : body 옵션이 표시되지 않는다. 아마 그것이 문제입니다. 레일 콘솔에서 보내보고 무슨 일이 일어나는 지보십시오. http://api.rubyonrails.org/classes/ActionMailer/Base.html#method-i-mail

+0

작동하지 않았습니다. 결과를 표시하기 위해 내 게시물을 업데이트했습니다. – HappyDeveloper

9

에 관한 기록 오류 (레일 4.2 deliver_now/deliver_later로 시작 또는)

UserMailer.test_email.deliver 

을 할 필요가 이메일을 보내려면 throw는 예외를 throw합니다. 사용자 이름이나 비밀번호를 잘못 입력했는지 또는 설정을 잘못 입력했는지 쉽게 확인할 수 있습니다.

UserMailer.test_email.deliver!

1

레일 4.2에 대한 업데이트 된 대답은 다음과 같습니다

UserMailer.test_email.deliver_now! 

감탄 표시는 오류가있는 경우 예외를 발생하는 것입니다.

+0

느낌표는 암시 적 긴급도 추가합니다 :) –

+0

'deliver_now!'perform_deliveries와 raise_delivery_errors를 체크하지 않고 _outout_하는 이메일을 배달하므로주의해서 사용하십시오. http://api.rubyonrails.org/v4.2/classes/ActionMailer/MessageDelivery.html#method-i-deliver_now-21 –

관련 문제