2009-12-21 3 views
8

지난 며칠 동안 Rails를 사용하는 방법을 배웠고 Google에서 해결할 수 없었던 문제가 발생했습니다.Mac에서 Rails ActionMailer 문제

이메일을 보내는 기본 문의 양식을 만들고 있습니다. 테스트에서 모든 것이 정상적으로 작동하는 것 같습니다.이 경우 양식이 작동하고 ActionMailer가 올바르게 구현되었지만 ActionMailer를 구성하는 데 문제가 있습니다. 나는 OSX 10.6.2를 사용하고있다. 나는 postfix를 실행 중이며 telnet localhost 25을 사용하여 실행 중임을 확인했습니다. 양식을 사용하려고하면 "Connection refused"오류가 발생합니다.

이 내 현재의 구성입니다 : 내가 :domain을 설정해야 할 수도 있습니다하지만 난 그게이 상황에서로 설정해야하는지에 가지 혼란 스러워요 생각

config.action_mailer.smtp_settings = { 
    :address => 'localhost', 
    :port  => 25 
} 

.

답변

6

내 인생은 대략 100x 쉬워졌습니다 : sendmail은 나의 Mac에서 배달 방법으로 smtp가 아닌 smtp를 사용하는 것이 좋습니다. 이 답변에서는 Mac에서 메일을 전송하고 실제로 작동하는 방식에 신경 쓰지 않는다고 가정합니다.

프로젝트의 모든 시간에 인터넷에 연결하려면 내 로컬 Mac보다 gmail을 통해 나가는 ActionMailer 발신 메일을 구성해야합니다.

 
ActionMailer::Base.delivery_method = :smtp 

ActionMailer::Base.smtp_settings = { 
:enable_starttls_auto => true, 
    :address  => "smtp.gmail.com", 
    :port   => 587, 
    :domain   => "example.com", 
    :authentication => :plain, 
    :user_name => "[email protected]", 
    :password => "secret" 
}

도메인 용 Google 앱에 설정된 example.com이라는 맞춤 도메인 용입니다. Gmail 계정을 만들고 거기에 물건을 보낼 수도 있습니다. (example.com의 모든 인스턴스를 gmail.com으로 변경)

0

'localhost'대신 '127.0.0.1'을 사용하면 이것이 IPv4 대 IPv6 일지 또는 귀하의 해결사와 관련된 문제인지 확인할 수 있습니까?

+0

흠, 아니, 그 중 하나가 작동하지 않았다. – seth

+0

"netstat -na | grep LISTEN"의 출력에 "tcp4 0 0 * .25 *. * LISTEN"이 표시되면 연결해야합니다. ":: 1.25"가 표시되면 IPv6 모드 일 수 있습니다. 리틀 스 니치 (Little Snitch)를 비롯하여 모든 종류의 로컬 방화벽이있는 경우 사용자의 통화도 차단 될 수 있습니다. 확실히 알 수있는 유일한 방법은 단위 테스트를 통해 Ruby에서 직접 연결을 시도하는 것입니다. – tadman

6

postfix 데몬을 시작해야합니다. 터미널에 입력하여 포트가 열려 있는지 알 수 있습니다. 포트에 연결하려고 시도하면 포트가 열려 있는지 알 수 있습니다.

telnet localhost 25 

25 포트에 연결을 시도합니다. 그것은 postfix isnt가 실행 중이면 연결을 중단하고 telnet을 종료하려면 'ctl-]를 눌러 연결을 중지하고 연결을 끊습니다.

sudo launchctl start org.postfix.master 

다음 텔넷으로 연결을 시도 :이 연결되지 않으면

, 당신은 후위 데몬을 시작해야합니다. 연결해야합니다. 이제 ActionMailer 클래스에서 이메일을 보낼 준비가되었습니다.

sudo launchctl stop org.postfix.master 

내가 this guide 다음에 접미사 데몬

1

을 중지하고 모든 것이 제대로 작동합니다. 주로 :

sudo postfix start 

다음

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :address => "localhost", 
    :port => 25 
} 
0

전송 및 개발 enter link description here을 사용할 때 메일을 확인하는 또 다른 좋은 방법.자신의 웹 사이트에서

인용구 :

MailCatcher는 웹 인터페이스에 표시하는 데에 전송 된 메시지를 잡는다 슈퍼 간단한 SMTP 서버를 실행합니다. mailcatcher를 실행하고 기본 SMTP 서버 대신 smtp://localhost:1025에 전달할 좋아하는 앱을 설정 한 다음 http://localhost:1080을 확인하여 지금까지 도착한 메일을 확인하십시오.

모든 수신자에게 메일을 가로 채기 때문에 모든 메일을 한 곳에서 쉽게 확인할 수 있습니다.