我正在尝试使用Gmail帐户发送确认电子邮件。我环顾四周,没有什么是显而易见的。没有错误或任何东西,它只是不发送
我有这个作为初始化者:
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => "<address>@gmail.com",
:password => "<password>",
:authentication => "plain",
:enable_starttls_auto => true
}
ActionMailer::Base.default_url_options[:host] = "localhost:3000"
答案 0 :(得分:64)
至少在Rails 3.2中你不再需要tlsmail
gem
这就足够了
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => 'baci.lindsaar.net',
:user_name => '<username>',
:password => '<password>',
:authentication => 'plain',
:enable_starttls_auto => true }
答案 1 :(得分:8)
将tlsmail添加到gemfile
gem 'tlsmail'
运行:
bundle install
将这些设置添加到config / envirnoments / development.rb文件
YourApplicationName::Application.configure do
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 = {
:address => "smtp.gmail.com",
:port => "587",
:domain => "gmail.com",
:enable_starttls_auto => true,
:authentication => :login,
:user_name => "<addreee>@gmail.com",
:password => "<password>"
}
config.action_mailer.raise_delivery_errors = true
答案 2 :(得分:5)
您应该检查 my_user_name@gmail.com 是否实际发送了该电子邮件。我们在过去通过Gmail的SMTP服务器发送验证电子邮件时遇到了这方面的问题,因为批量发送最终根本不发送。
我建议您登录my_user_name@gmail.com并确认没有问题并且已发送电子邮件。
如果没有,您可能需要尝试使用Send Grid之类的服务来发送外发电子邮件。
或者,您可以查看您的服务器。或者如果您正在开发中,请查看log/development.log
。我很确定您可以在日志中看到它实际上是在尝试发送邮件。
问题是Google不信任您的本地IP地址,并且您的邮件将无法发送(甚至不会发送到垃圾邮件目录)。没有办法解决这个问题,但使用列入白名单的服务器。
您可以通过将应用程序部署到像Heroku这样的生产服务器并在那里进行测试来尝试这一点。
答案 3 :(得分:0)
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => 'baci.lindsaar.net',
:user_name => '<username>',
:password => '<password>',
:authentication => 'plain',
:enable_starttls_auto => true }
<username>
表示填写真实用户名? <password>