Ruby on rails 3 Rails Cast:ActionMailer电子邮件未发送到收件箱

Ruby on rails 3 Rails Cast:ActionMailer电子邮件未发送到收件箱,ruby-on-rails-3,actionmailer,railscasts,Ruby On Rails 3,Actionmailer,Railscasts,服务器声明电子邮件已发送到正确的地址,但我的收件箱中没有收到邮件 我的Setup\u mail.rb文件 ActionMailer::Base.smtp_settings ={ :address => "smtp.gmail.com", :port => 587, :domain => "gmail.com", :user_name => "my_user_name@gmail.com",

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

我的Setup\u 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
config.action_mailer.delivery_method = :smtp
我的
test.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
config.action_mailer.delivery_method = :smtp
我尝试了多种变体,但都迷路了。我在Windows7机器上运行。我正在运行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
我的用户_mailer.rb 类UserMailer
default :from => "my_user_name@gmail.com"

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

end
end

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

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
}

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

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
}

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

我建议您登录我的用户_name@gmail.com并确认没有问题,邮件已发送


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

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

我建议您登录我的用户_name@gmail.com并确认没有问题,邮件已发送


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

查看您的服务器。我敢肯定,你可以在你的日志中看到,它实际上是在试图发送邮件

问题是谷歌不信任你的本地IP地址,你的邮件也不会被发送(甚至不会发送到垃圾邮件目录)。除了使用白名单服务器,没有办法解决这个问题


如果您在生产环境中尝试应用程序,这应该正常工作,例如,将应用程序部署到heroku进行测试。

查看您的服务器。我敢肯定,你可以在你的日志中看到,它实际上是在试图发送邮件

问题是谷歌不信任你的本地IP地址,你的邮件也不会被发送(甚至不会发送到垃圾邮件目录)。除了使用白名单服务器,没有办法解决这个问题


如果您在生产环境中尝试应用程序,这应该正常工作,例如,将应用程序部署到heroku进行测试。

尝试在最后输入
。交付
。这为我解决了这个问题:

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

试着把
放进去。在最后交付
。这为我解决了这个问题:

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

我也有同样的问题,我可以看到在我的控制台中邮件被发送了,但在收件箱中什么也没有出现,一件事是你可以在白名单服务器上部署你的应用程序,比如heroku,或者,如果您想通过本地浏览器查看仅用于测试的应用程序,只需在浏览器中启用不太安全的应用程序,您就应该能够在收件箱中查看该电子邮件

我也遇到了同样的问题,我可以看到在我的控制台中发送了邮件,但在收件箱中什么也没有出现,一件事是你可以将你的应用程序部署在像heroku这样的白名单服务器上,或者,如果您想通过本地浏览器查看仅用于测试的应用程序,只需在浏览器中启用不太安全的应用程序,您就应该能够在收件箱中查看该电子邮件

您能发布该邮件特定的模型和控制器的代码吗?我认为谷歌要求您使用SSL/TLS。@caley Woods::enable\u starttls\u auto=>true表示使用SSL/TLS@安德烈:谢谢,我漏掉了那一行。你能发布这个邮件特定的模型和控制器的代码吗?我想谷歌要求你使用SSL/TLS。@caley Woods::enable_starttls_auto=>true意味着SSL/TLS被使用了@安德烈:谢谢,我错过了那一行。我更改了身份验证,电子邮件没有进入收件箱。谢谢你的建议。@user7995很有趣。rails指南说它需要是一个符号
:plain
,但在他们的示例中,他们使用了“plain”字符串。我将其部署到Heroku,解决了这个问题。但是,这在开发或测试中仍然不起作用。我更改了身份验证,电子邮件没有进入收件箱。谢谢你的建议。@user7995很有趣。rails指南说它需要是一个符号
:plain
,但在他们的示例中,他们使用了“plain”字符串。我将其部署到Heroku,解决了这个问题。但是,这在开发或测试中仍然不起作用。这是正确的。我部署到Heroku,邮件收发员工作。谢谢你提供的信息。是的,我检查了我的/var/log/mail.log,找到了根本原因。谢谢!这是正确的。我部署到Heroku,邮件收发员工作。谢谢你提供的信息。是的,我检查了我的/var/log/mail.log,找到了根本原因。谢谢!