问题描述
我正在使用Devise:可确认和:可恢复模块来确认用户,如果忘记密码,他可以恢复密码。一切顺利,邮件生成,我可以在服务器日志中看到它,但是我面临错误,邮件没有传递到邮箱。
我的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 =>真的,这是重要的狗屎!
:address => 'smtp.gmail.com',#'localhost',
:port => 587,
:tls => true,
:domain => 'mail.google.com',#mail.customdomain.com如果您使用谷歌应用程序
:authentication => :login,
:user_name => '[email protected]',
:password => '_secret_password'
}
如果:地址是smtp.gmail.com然后我收到以下错误:
SocketError(getaddrinfo:名称或服务未知):
如果我将:地址设置为'localhost',那么我会收到以下错误:
$ b $连接(2)
我不知道这是什么:地址意味着,所有这些东西的新手。
在运行 uname -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
#我上面添加的条目*
#以下行对于IPv6能力的主机是理想的
:: 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:名称或服务不知道):
现在的错误是:
Errno :: ECONNREFUSED C连接拒绝 - 连接(2)
我不知道发生了什么问题,googled的错误并尝试了一切,但没有什么来拯救。
我也安装了'tlsmail' gem,还有'mail' gem,我的应用程序正处于开发模式。
帮助我修复这个错误,以便我可以愉快地继续我的铁路旅程,如果可能的话,请指导我一下:正确的方向的地址问题,以便我了解这一点的基础。
提前感谢
如果您仍然遇到问题,请尝试使用这些设置:
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',#你也可以使用google.com
:authentication => :plain,
:user_name => '[email protected]',
:password => '_secret_password'
}
此外,我建议将这些设置放在你的配置/环境/ development.rb文件而不是environment.rb,以便您可以为每个环境指定不同的邮件服务器。
I am using Devise :confirmable and :recoverable module to confirm a user and to let him recover his password if he forgets it. Everything is going fine, the mail gets generated and I can see it in the server log, but then I am facing errors and the mail is not delivered to the mailbox.The SMTP settings for my environment.rb file is :
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'
}
If the :address is 'smtp.gmail.com' , then i get the following error:
SocketError (getaddrinfo: Name or service not known):
If i set the :address to 'localhost', then i get the following error:
Errno::ECONNREFUSED Connection refused - connect(2)
I don't know what this :address means, a newbie for all this stuff.On running uname -a, i get
Linux jatin-ubuntu 2.6.32-24-generic #38-Ubuntu SMP Mon Jul 5 09:22:14 UTC 2010 i686 GNU/Linux
In my /etc/hosts file the entries are :
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
When I uncomment the 'smtp.gmail.com' address in the /etc/hosts file, the following error is gone :
SocketError (getaddrinfo: Name or service not known):
and now the error is :
Errno::ECONNREFUSED Connection refused - connect(2)
I don't know what is going wrong, googled for the errors and tried everything but nothing came to rescue.I do have the 'tlsmail' gem installed and the 'mail' gem as well, and my application is in development mode.Help me fix this error so that i can happily continue my rails journey and if possible guide me a little over this :address issue in the right direction so that i understand the basics of this.Thanks in advance
If you're still having problems with this try using these settings:
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'
}
Additionally I would recommend putting these settings in your config/environments/development.rb file instead of environment.rb so that you can specify different mailservers for each environment.
这篇关于用devise和Gmail smtp服务器发送邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!