2012-03-17 1 views
1

Rails에 초보자가 있는데 질문이 있습니다. Devise 플러그인으로 간단한 응용 프로그램을 설치하고 Capistrano를 통해 프로덕션 서버 (Linode의 Ubuntu, nginx + 승객)에 배포하십시오. 그리고 이제 이메일 (비밀 번호 복구, 이메일 확인 등 Devise에서)를 보내려고합니다.어디에서 SMTP for Rails를 구성 할 수있는 완전한 매뉴얼을 읽을 수 있습니까?

하지만 그것은 효과가 있습니다.

나는 /enviroments/production.rb

config.action_mailer.default_url_options = { :host => "myhostname.com" } 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.raise_delivery_errors = true 

에서이 라인을 가지고 그리고 난 내 응용 프로그램에서 이메일을 보낼 때, 나는 500 오류 얻을 "죄송합니다,하지만 뭔가 잘못 갔다. " (승객 기준). 로그에서 /I는 메일 서버로 exim4를 사용해

Net::SMTPServerBusy (451 4.3.0 Temporary system failure. Please try again later.) 

을 production.log. 또한 sendmail을 설치하고 변경해보십시오.

config.action_mailer.delivery_method = :sendmail 

전자 메일은 보내기 만하지만 응용 프로그램은 너무 느립니다.

그럼, 내 질문은 : 내가 무엇을 해야할지, 그리고 레일즈 애플리케이션으로 exim4를 설정하기 위해 완전한 매뉴얼이나 문서를 읽을 수있는 곳은 무엇인가?

감사합니다. 제 5 장과 제 ActionMailer 공식 문서의 5.1에 따르면

+0

exim4가 단독으로 작동합니까? 즉 Rails 앱이 없다면? 일반 전자 메일 클라이언트 (Thunderbird와 같은)와 함께 사용하여 작동하는지 확인하십시오. –

+0

예, exim이 작동합니다. 나는 시험해 본다. "이것은 시험이다." | mail -s [email protected]을 테스트하십시오. 실제로 나는 정확히 내가하는 일을 기억하지 못한다. 그러나 문제는 이미 해결되었다. 나는 우분투를 다시 시작한 것 같아. –

답변

3

: 'DELIVERY_METHOD'로 제공 : 'exim4에'옵션 우리는 더가 없음을 알 수 http://guides.rubyonrails.org/action_mailer_basics.html

.

그래서 나는 그가 "sendmail"을 사용하고 있음을 "속임수"로 제안 할 것이다 (비록 그는 exim4를 사용할 것이지만).

  • 메시지의 수신자가 발생-t 옵션을 얻을 수하기 :

    config.action_mailer.delivery_method = :sendmail 
    config.action_mailer.sendmail_settings = { 
        :location => '/usr/sbin/exim4', 
        :arguments => '-i' 
    } 
    config.action_mailer.perform_deliveries = true 
    config.action_mailer.raise_delivery_errors = true 
    

    인수는 다음 exim4에 옵션과 일치 : 은 설정/enviroments에/production.rb 파일에 다음과 같은 구성을 사용 명령 인수에서 대신 메시지의 To :, Cc :, Bcc : 헤더 행을 사용하십시오.

  • -i 옵션은 점이있는 행이 메시지를 종료하지 못하도록합니다. 파일 끝 (end-of-file) 만 그렇게합니다.

-t 옵션을 사용하지 마십시오. http://noosfero.org/Development/MailSending

내가보기 엔 당신이 대신 "인터넷 사이트"의 첫 번째 화면에 "스마트 호스트"을 선택하는 것이 좋습니다 : 제대로 exim4에 데몬을 구성하기 위해

, 나는이 빠른 방법을 제안한다.

이것은 인터넷 (gmail, yahoo 등 ...)의 메일 제공 업체가 기본적으로 인터넷의 알 수없는 IP 주소에서 온 이메일을 차단하기 때문입니다 (여기에는 새로운 서버 IP 주소가 포함됨) .

'스마트 호스트'를 선택하면 서버가 자체 전자 메일 메시지를 전달하기 위해 기존의 (신뢰할 수있는) 메일 서버 (gmail, yahoo 등)에 연결해야합니다. 이렇게하면 전자 메일이 목적지까지 도달 할 수 있습니다.

=== UPDATE 나는 레일의 일부 버전 (3.2) 이후 -t 별 수신 작업을 만드는 문제가 있었다. 메시지 필드 : 레일 더 이상받는 사람을 포함하지 않은으로

Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25) 

그래서 내가 -t 옵션을 제거 : 나는 나의 /var/www/my_app/log/production.log에서 다음과 같은 오류가 있었다 오히려 커맨드 라인에서 보냈습니다. 내가 exim4에 작업 레일을이 도움이 사람들을 희망 gitlabhq

:

나는이 응용 프로그램에서 비슷한 문제를 가진 다른 developper을 발견했다.

0

데비안은 8 + Rails4.2.6 + 수출입 버전 4.84_2 내 설정/enviroments에/production.rb 파일에 추가

: 에서

config.action_mailer.default_options  = { from: '[email protected]' } 
config.action_mailer.default_url_options = { host: 'hostname.com' } 
config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true 

및 명확한 (주석)을 DELIVERY_METHOD 및 sendmail_settings PARAMS :

# config.action_mailer.delivery_method = :sendmail 
# config.action_mailer.sendmail_settings = { 
#  :location => '/usr/sbin/exim4', 
#  :arguments => '-i' 
# } 

그리고 그것은 작동합니다!

나를 위해 더글라스의 대답이 작동하지 않았습니다.

관련 문제