복붙노트

[RUBY-ON-RAILS] 개발은 4 레일에 ActionMailer 메일을 발송하지

RUBY-ON-RAILS

개발은 4 레일에 ActionMailer 메일을 발송하지

왜이 메일러는 메일을 전송하지? (디버깅 또는 어떤 아이디어?)

을 my_app에서 / 설정 / 환경 / development.rb이 코드를 가지고 :

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address:              'smtp.gmail.com',
    port:                 587,
    domain:               'my_app.com',
    user_name:            ENV['GMAIL_USERNAME'],
    password:             ENV['GMAIL_PASSWORD'],
    authentication:       'plain',
    enable_starttls_auto: true  }

그럼 ~ 내 로컬 컴퓨터 / .bash_profile에이 코드를 가지고 :

export GMAIL_USERNAME='blah@my_app.com'
export GMAIL_PASSWORD='***'

내 터미널에서 $ ENV를 실행하면, 둘 다 환경 변수가 올바르게 설정되어 있는지를 참조하십시오.

나는 또한 내 레일 서버를 다시 시작했다.

해결법

  1. ==============================

    1.당신은 추가해야

    당신은 추가해야

    config.action_mailer.perform_deliveries = true
    

    이 거짓에 기본적으로, 메일을 방지하는 개발 환경에서 확인할 수 있습니다 ...

  2. ==============================

    2.사람이 센드 메일의 전달 방법을 전환, SMTP를 사용하지 않는 명시 적으로 수행 할 배달을 설정하는 것 외에 저를 도와 :

    사람이 센드 메일의 전달 방법을 전환, SMTP를 사용하지 않는 명시 적으로 수행 할 배달을 설정하는 것 외에 저를 도와 :

    config.action_mailer.delivery_method = :sendmail
    
  3. ==============================

    3.당신이 콘솔에서 이메일을 보내는 문제가있는 경우이 메일에 방법을 제공 호출해야합니다.

    당신이 콘솔에서 이메일을 보내는 문제가있는 경우이 메일에 방법을 제공 호출해야합니다.

    MyMailer.create_email.deliver
    
  4. ==============================

    4.이러한 답변은 모두 훌륭하지만, 특히 디버깅의 맥락에서, 화상을 입을 수있는 또 다른 장소가있다.

    이러한 답변은 모두 훌륭하지만, 특히 디버깅의 맥락에서, 화상을 입을 수있는 또 다른 장소가있다.

    development.rb 메이크업에서 확인 당신은 = 사실 config.action_mailer.raise_delivery_errors 설정

    당신의 .deliver 방법은 문제없이 작동하는 것처럼 보이지만 실제로 회선을 통해 이메일을 받았다면, 당신의 납품 방법은 예외를 throw 할 수 있으며, 레일 오류를 삼키는된다. 당신은 단순히 잘못 자격 증명으로 간단하게 뭔가가 있다면 이것은 매우 사실, 또는 AWS는 API 오류 액세스가 거부되었습니다. 밖으로 머리를 추출하고 만들어 저장해야 당신은 raise_delivery_errors이 켜져 있습니다. 그것은 당신 만이 할 수없는 일을 말하고자합니다.

  5. ==============================

    5.내가 그것을 알아 냈어요 그래서. 라인 ActionMailer :: Base.delivery_method 갖는 = SMTP의 설정 / environment.rb에 우선 ActionMailer :: Base.delivery_method = 설정 / 환경 / test.rb에서 테스트.

    내가 그것을 알아 냈어요 그래서. 라인 ActionMailer :: Base.delivery_method 갖는 = SMTP의 설정 / environment.rb에 우선 ActionMailer :: Base.delivery_method = 설정 / 환경 / test.rb에서 테스트.

    그래서, 라인, ActionMailer :: Base.delivery_method = 삭제 : 설정 / environment.rb에에서 SMTP 및 설정 / 환경 / production.rb에 넣습니다. 설정 / 환경 / test.rb에서 테스트 및 당신이 설정 / 환경 / development.rb 원하는 버전 : 그것은 당신이 ActionMailer :: Base.delivery_method을 = 배치 할 수 있습니다. 내가 위조자를 사용하여 내 데이터베이스를 채워 시험로와에 변경 : 나는 development.rb 만든 내가 진짜 이메일은 추가 검사로 전송하고 있는지 확인했다 있도록 SMTP.

    참고 : 이러한 변경 사항을 적용하려면 당신은 당신의 서버를 다시 시작해야합니다.

    또 다른 참고 : Heroku가 현재 SendGrid 지침 (https://devcenter.heroku.com/articles/sendgrid) 가능성의 마지막 줄을 제거하고 배치 요구하는 새로운 설정 / 초기화 / mail.rb 파일에 SendGrid Heroku가 구성 코드를 삽입 각 구성에서, 원하는 버전 / 환경 / [production.rb, development.rb, test.rb]

  6. from https://stackoverflow.com/questions/20769589/actionmailer-not-sending-mail-in-development-rails-4 by cc-by-sa and MIT license