即使在设置了所有可能的配置后,actionmailer也不会发送电子邮件

时间:2017-11-26 21:05:28

标签: ruby-on-rails

这是 ApplicationMailer

中的方法
class CancelTrip < ApplicationMailer
    default from: 'xyz@gmail.com'

    def cancel_trip
        @recvr= "ssdd@gmail.com"
        mail(to: @recvr, subject: 'Your trip has been cancelled as per your request' )
    end
end

环境变量如下:

SMTP_ADDRESS: 'smtp.gmail.com'
SMTP_PORT: 587
SMTP_DOMAIN: 'localhost:3000'
SMTP_USERNAME: 'xyz@gmail.com'
SMTP_PASSWORD: 'gggh2354'

我在控制器中调用邮件程序方法如下:

def cancel
   xxxxx
   CancelTrip.cancel_trip.deliver_now
end

developement.rb 有以下

config.action_mailer.raise_delivery_errors = false
config.action_mailer.default_url_options = {host: 'localhost', port:3000}
config.action_mailer.perform_deliveries = true

日志显示正在发送的电子邮件。但我在收件箱中看不到任何电子邮件。 我的rails版本是4.2.6。

3 个答案:

答案 0 :(得分:1)

config/application.rb文件中添加以下smtp设置:

  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.raise_delivery_errors = true

  config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => "gmail.com",
      :user_name => "xxxxxxxxx@gmail.com",
      :password => "xxxxxxxx",
      :authentication => "plain",
      :enable_starttls_auto => true
  }

答案 1 :(得分:0)

检查垃圾邮件......我回来时遇到了这个问题

答案 2 :(得分:0)

一种可能是您的防火墙不允许发送电子邮件。尝试连接不同的网络。