2011-06-16 87 views
28

我想要使用gmail帐户发送确认电子邮件。我环顾四周,没有什么是显而易见的。没有任何错误或任何东西,它只是不到风度送gmail smtp与rails 3

我有这样的initalizer:

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" 
+1

发送电子邮件时,您的控制台输出是什么? – 2011-06-17 01:15:38

回答

5

你应该检查[email protected]实际上已经发送的电子邮件。过去,当通过Gmail的SMTP服务器发送验证电子邮件时,我们遇到了问题,因为批量发送最终不会发送。

我建议您登录到[email protected]并确认没有问题并且发送了电子邮件。

如果不是,您可能需要尝试像Send Grid这样的服务发送外发电子邮件。

或者,您可以查看您的服务器。或者如果您正在开发中,请查看log/development.log。我非常确定,您可以在日志中看到它实际上正在尝试发送邮件。

问题是Google不信任您的本地IP地址,您的邮件将无法发送(甚至无法收到垃圾邮件目录)。没有办法解决这个问题,但使用白名单服务器。

您可以通过将您的应用程序部署到像Heroku这样的生产服务器并在此处进行测试来尝试此操作。

8

附加tlsmail到Gemfile中

gem 'tlsmail' 

运行:

bundle install 

添加这些设置来配置/ 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 
+8

别忘了重启服务器;) – 2011-06-17 07:33:30

+3

RESTART SERVER ..... ahhh ...谢谢! – 2013-01-25 01:02:11

64

你不需要tlsmail宝石至少用Rails 3.2

这将足以

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 } 

从万能的引导ActionMailer configuration for gmail

+0

真棒,很高兴知道。为我节省一堆头痛。感谢您的领导! – LearningRoR 2012-09-01 15:56:44

+0

没问题;)我现在已经习惯了在Rails指南中搜索几乎所有内容 – brutuscat 2012-09-02 15:30:44

+8

显然,':domain'是[optional](http://bit.ly/QAAPPv),尽管你不知道从阅读[文档](http://am.rubyonrails.org/)。 – 2012-10-21 21:32:24

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>