2017-05-01 9 views
0

Cloud9에서 Rails 응용 프로그램을 개발 중입니다. Devise 확인 전자 메일을 작동시키는 것이 매우 간단합니다. 웬일인지, 그들은 보내지 않고있다.Devise 확인 이메일이 전송되지 않음

전자 메일 기능에 SendGrid를 사용하고 있습니다. 테스트 이메일을 보내는 사소한 ActionMailer를 만들 수 있기 때문에 SendGrid가 올바르게 작동하고 있다는 것을 알고 있습니다. 그러나 어떤 이유로 든 Devise 확인 전자 메일이 전송되지 않습니다. ActionMailer::Base.mail 방법으로 전화를 걸었지만 메일이 배달되지 않습니다.

디버깅하는 방법을 모르겠습니다.

다만 이미 작동하고 물건을 확인하는 제안 방지 : 사용자 옵션은 내가

  • config.action_mailer.perform_deliveries = true을 설정하고 :confirmable
  • 을 포함

    • 을 내가 가지고 config/initializers/setup_mail.rb

    에 다음 행 코드 :

    if Rails.env.development? || Rails.env.production? 
    ActionMailer::Base.delivery_method = :smtp 
    ActionMailer::Base.smtp_settings = { 
        address:  'smtp.sendgrid.net', 
        port:   '2525', 
        authentication: :plain, 
        user_name:  ENV['SENDGRID_USERNAME'], 
        password:  ENV['SENDGRID_PASSWORD'], 
        domain:   "sendgrid.com", 
        enable_starttls_auto: true 
    } 
    
  • +0

    무슨 일이 벌어지고 있었는지 디버그 할 때 레일즈 콘솔에서'mail'을 호출 해 보았습니다. 내가 발견 한 것은'ActionMailer :: Base.mail'을 직접 호출하면 결코 메일이 전달되지 않지만,'ActionMailer'의 서브 클래스를 통해 간접적으로 호출하면 작동합니다. 왜 세계에서 기본 클래스가 작동하지 않을까요? –

    +0

    왜 작동할까요? ActionMailer :: Base는 하위 클래스로 만들어졌습니다. – max

    +0

    그러나 서브 클래스가 많은 기능을 추가하지 않는 것 : '클래스 ApplicationMailer

    답변

    0

    내 솔루션이 의도 한 솔루션이 아니라고 생각하지만 작동합니다 (이유는 모르겠지만).

    1. ActionMailer::Base.layout 'mailer'
    2. ActionMailer::Base.default from: "[email protected]"

    이러한 고안에 대한 몇 가지 구성 파일에 지정해야합니다 일들이 아마도,하지만 난 : 파일 config/initializers/setup_mail.rb에서

    , 나는 다음 두 줄을 추가 그렇게하기위한 지침을 보지 못했습니다.

    [편집] 중요한 2 행만 있습니다. '보낸 사람'주소가 가짜 이메일 주소는 중요하지 않지만 이메일 주소가 누락 된 경우 이메일이 배달되지 않습니다.