web-dev-qa-db-ja.com

deviseとGmailのSMTPサーバーでメールを送信する

私はDevise:confirmableおよび:recoverableモジュールを使用して、ユーザーを確認し、ユーザーがパスワードを忘れた場合にパスワードを回復できるようにしています。すべてが順調に進んでおり、メールが生成されてサーバーログに表示されますが、エラーが発生し、メールがメールボックスに配信されません。私のenvironment.rbファイルのSMTP設定は次のとおりです。

require 'tlsmail'
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.delivery_method = :smtp

ActionMailer::Base.smtp_settings = {
  :enable_starttls_auto => true,  #this is the important shit!
  :address => 'smtp.gmail.com', #'localhost', 
  :port => 587,
  :tls => true,
  :domain => 'mail.google.com',  # mail.customdomain.com if you use google apps
  :authentication => :login,
  :user_name => '[email protected]',
  :password => '_secret_password'
} 

:addressが 'smtp.gmail.com'の場合、次のエラーが発生します。

SocketError (getaddrinfo: Name or service not known):

:addressを「localhost」に設定すると、次のエラーが発生します。

Errno::ECONNREFUSED Connection refused - connect(2)

私はこの:addressが何を意味するのかわかりません、これらすべてのものの初心者です。 name -aを実行すると、

Linux jatin-ubuntu 2.6.32-24-generic #38-Ubuntu SMP Mon Jul 5 09:22:14 UTC 2010 i686 GNU/Linux

私の/ etc/hostsファイルでは、エントリは次のとおりです。

127.0.0.1   localhost
127.0.1.1   jatin-ubuntu

*#74.125.93.109   smtp.gmail.com 
#The above entry added by me*

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

/ etc/hostsファイルの「smtp.gmail.com」アドレスのコメントを解除すると、次のエラーがなくなります。

SocketError (getaddrinfo: Name or service not known):

そして今、エラーは:

Errno::ECONNREFUSED Connection refused - connect(2)

何が悪いのかわからないので、エラーをググってすべてを試しましたが、何も助けにはなりませんでした。 'tlsmail' gemがインストールされており、'mail' gemもインストールされており、アプリケーションは開発モードになっています。このエラーを修正して、Railsの旅を続けられるようにし、可能であれば、この:addressの問題について少し説明して、これの基本を理解できるようにしてください。ありがとうございます。前進

21
Jatin Ganhotra

それでも問題が解決しない場合は、次の設定を使用してみてください。

require 'tlsmail'    
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.smtp_settings = {
  :enable_starttls_auto => true,  
  :address            => 'smtp.gmail.com',
  :port               => 587,
  :tls                  => true,
  :domain             => 'gmail.com', #you can also use google.com
  :authentication     => :plain,
  :user_name          => '[email protected]',
  :password           => '_secret_password'
}

さらに、これらの設定をenvironment.rbではなくconfig/environment/development.rbファイルに入れて、環境ごとに異なるメールサーバーを指定できるようにすることをお勧めします。

24
Braden Becker
0
riotera