개발 환경에서 Rails 3로 메일 보내기
나는 이것이 전에 백만 번 요청되었다고 확신하지만 나에게 맞는 것을 찾을 수 없으므로 다시 묻습니다!
Rails 3에서 ActionMailer를 사용하여 이메일을 보내는 방법이 필요합니다. 새로운 ActionMailer에 대한 Railscasts 자습서를 포함하여 수많은 자습서를 따랐고 메일이 생성되는 것을 볼 수 있지만받지 못했습니다.
여러 가지 방법을 시도했지만 일반적으로 다음 설정을 구성하는 것입니다.
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => "587",
:domain => "gmail.com",
:user_name => "xxx@gmail.com",
:password => "yyy",
:authentication => "plain",
:enable_starttls_auto => true
}
내 config / environment.rb, config / environments / development.rb에서 위의 코드 (물론 유효한 Gmail 세부 정보 포함)를 시도했으며 현재 자체 이니셜 라이저 config / initialisers / setup_mail.rb에 있습니다.
또한 Gmail 및 Sendgrid를 포함한 몇 가지 다른 smtp 서버를 사용해 보았지만 그에 따라 smtp 설정을 조정했지만 여전히 아무것도 없습니다. 터미널과 개발 로그에서 메일을 볼 수 있습니다.
ActionMailer가 작동하도록 설정해야하는 내가 놓친 다른 문제를 아는 사람이 있습니까? 실패하면 메일이 전송되지 않는 이유에 대한 자세한 정보를 얻을 수있는 방법이 있습니까? 나는 가지고있다
config.action_mailer.raise_delivery_errors = true
내 config / development.rb에 설정되어 있지만 개발 로그는 여전히 터미널에서 볼 수있는 것과 동일하게 표시됩니다.
그만한 가치는 특정 설정이 필요한 경우를 대비하여 Ubuntu 10.04 랩톱에서 개발 중입니다.
많은 감사
글쎄, 나는 문제를 해결했지만 이것이 작동하는 이유와 다른 방법은 그렇지 않은 이유를 모르겠습니다.
해결책은 다음을 포함하는 config / initialisers / setup_mail.rb에 이니셜 라이저를 만드는 것이 었습니다.
if Rails.env != 'test'
email_settings = YAML::load(File.open("#{Rails.root.to_s}/config/email.yml"))
ActionMailer::Base.smtp_settings = email_settings[Rails.env] unless email_settings[Rails.env].nil?
end
그런 다음 개발 및 프로덕션 이메일 계정의 세부 정보가 포함 된 config / email.yml을 추가했습니다.
development:
:address: smtp.gmail.com
:port: 587
:authentication: plain
:user_name: xxx
:password: yyy
:enable_starttls_auto: true
production:
:address: smtp.gmail.com
:port: 587
:authentication: plain
:user_name: xxx
:password: yyy
:enable_starttls_auto: true
내가 말했듯이 이유는 모르겠지만 이것이 트릭을 수행하는 것처럼 보였습니다. 포인터 주셔서 감사합니다
나는 다음을 가지고 config/environments/development.rb
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true
실제 메일 구성 config.actionmailer.*
은 config\application.rb
.
도움이 되었기를 바랍니다 :)
'smtp'대신 'sendmail'을 사용해보십시오.
ActionMailer::Base.delivery_method = :sendmail
ActionMailer::Base.sendmail_settings = {
:address => "smtp.gmail.com",
:port => "587",
:domain => "gmail.com",
:user_name => "xxx@gmail.com",
:password => "yyy",
:authentication => "plain",
:enable_starttls_auto => true
}
세개.
첫째, 포트는 정수이며 첫 번째 예에서와 같이 따옴표가 필요하지 않습니다. (하지만 문자열은 여전히 작동해야한다고 생각합니다.)
둘째,이 (또는 임의의) 이니셜 라이저 파일을 수정할 때마다 서버를 다시 시작하는 것을 잊지 마십시오. 다음을 추가 한 후 오류가 표시되지 않은 이유를 설명 할 수 있습니다.
config.action_mailer.raise_delivery_errors = true
Without having that error message, it's hard to determine why the mail wasn't going but now is. One possiblity is your use of double quotes around the password. If you were using a strong password and had a token in your password that wasn't escaped it could have been reinterpreted. (i.e. "P@ssw\0rd"
would become P@ssrd
). For just this reason, I always use single quotes in my code unless I specifically need the syntactic sugar.
Lastly, enable_starttls_auto: true
is the default and unnecessary.
Just put all config to: config/environments/development.rb
I mean
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => "587",
:domain => "gmail.com",
:user_name => "xxx@gmail.com",
:password => "yyy",
:authentication => "plain",
:enable_starttls_auto => true
}
and
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true
It worked for me.
ActionMailer::Base.delivery_method = :sendmail
and
config.action_mailer.perform_deliveries = true
were the two necessary steps that got me over this issue
In addition to, your gmail username does not alias.
Ref: https://support.google.com/mail/answer/12096?hl=en
My two pennies worth:
I had those exact same symptoms with Rails 5.1: Nothing happened, the settings in my development.rb
file were utterly ignored...
Then I remembered to restart the machine! (which solved magically the issue)
This had been pointed out by a couple of previous comments.
The issue is tricky however because you do not expect this behavior. In my view, the default comments in development.rb
are, in this respect, misleading:
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since *you don't have to restart the web server when you make code changes*.
ReferenceURL : https://stackoverflow.com/questions/4313177/sending-mail-with-rails-3-in-development-environment
'programing' 카테고리의 다른 글
"불법 한 정의 시작"을주는 Scala (0) | 2021.01.14 |
---|---|
Clojure에서 벡터 앞에 추가하는 관용적 방법은 무엇입니까? (0) | 2021.01.14 |
스칼라의 foreach 대 표현식 (0) | 2021.01.14 |
JAXB : 모든 요소에 네임 스페이스 접두사 필요 (0) | 2021.01.14 |
: vimgrep (Quickfix 목록)을 사용할 때 패턴 사이를 이동하는 방법은 무엇입니까? (0) | 2021.01.14 |