Rails Cast:ActionMailer电子邮件未发送到收件箱

时间:2011-06-14 15:57:30

标签: ruby-on-rails-3 actionmailer railscasts

服务器说明电子邮件已发送到正确的地址,但我没有收到收件箱中的邮件。

我的Setup_mail.rb文件

ActionMailer::Base.smtp_settings ={
  :address          => "smtp.gmail.com",
  :port         => 587,
  :domain           => "gmail.com",
  :user_name        => "my_user_name@gmail.com",
  :password         => "my_password",
  :authentication       => "Plain",
  :enable_starttls_auto => true
}

我的development.rb文件是:

# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_deliveries = true #default value
config.action_mailer.delivery_method = :smtp #default value

我的test.rb文件是:

config.action_mailer.delivery_method = :smtp

我尝试了多种变化而且迷路了。我在Windows 7机器上运行。我正在运行Ruby 1.8.7和Rails 3.0.7

有人可以帮忙吗?

这是我的创建方法:

def create
 @user = User.new(params[:user])
 if @user.save
   UserMailer.registration_confirmation(@user).deliver
   sign_in @user
   redirect_to @user, :flash => { :success => "Welcome to the Sample App!" }
 else
   @title = "Sign up"
   render 'new'
 end
end

我的user_mailer.rb     class UserMailer<的ActionMailer ::基

default :from => "my_user_name@gmail.com"

def registration_confirmation(user)
mail(:to => user.email, :subject => "Thanks for registering")

end
end

5 个答案:

答案 0 :(得分:5)

看看你的服务器。我很确定您可以在日志中看到它实际上是在尝试发送邮件。

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

如果你在生产中试用你的应用程序通常会有效,例如将你的应用程序部署到heroku进行测试。

答案 1 :(得分:2)

最后尝试输入.deliver。这为我解决了这个问题:

mail(:to .....).deliver!

答案 2 :(得分:0)

尝试将身份验证从字符串更改为符号。

ActionMailer::Base.smtp_settings ={
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => "gmail.com",
  :user_name            => "my_user_name@gmail.com",
  :password             => "my_password",
  :authentication       => :plain,
  :enable_starttls_auto => true
}

答案 3 :(得分:0)

您应该检查 my_user_name@gmail.com 是否实际发送了该电子邮件。我们在过去通过Gmail的SMTP服务器发送验证电子邮件时遇到了这方面的问题,因为批量发送最终根本不发送。

我建议您登录my_user_name@gmail.com并确认没有问题并且已发送电子邮件。

如果没有,您可能需要尝试使用Send Grid之类的服务来发送外发电子邮件。

答案 4 :(得分:0)

我遇到了同样的问题,我能够看到在控制台邮件中已发送邮件,但在收件箱中却什么也没出现,一件事是您可以将应用程序部署在列入白名单的服务器(例如heroku)上,或者只想查看通过本地进行测试的目的只是在浏览器中启用安全性较低的应用程序,您应该能够在收件箱中看到该电子邮件 https://myaccount.google.com/lesssecureapps