ActionMailer电子邮件在development.log中"发送",但未收到

use*_*046 14 ruby ruby-on-rails actionmailer

我有问题,实际上通过在的ActionMailer发展发送,在我的本地,用Rails的2.3.2红宝石1.8.6.development.log显示它已"发送"了没有错误的电子邮件,但未收到电子邮件.我已尝试多个电子邮件地址进行发送和接收,并尝试了多个配置和插件,但无法收到要发送的电子邮件.任何帮助都将非常感激 - 我觉得我正在为不同版本的导轨和红宝石的一系列解决方案跳舞,并且无法将其钉死.我非常感谢任何评论.谢谢!

插件:

  • 动作邮件可选tls
  • smtp_tls

不同的电子邮件配置:

  ActionMailer::Base.smtp_settings = {
    :enable_starttls_auto => true, #works in ruby 1.8.7 and above
    :address => 'smtp.gmail.com',
    :port => 587,
    :domain => 'example.com',
    :authentication => :plain,
    :user_name => 'testacct',
    :password => 'secret'
  }
Run Code Online (Sandbox Code Playgroud)
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :tls => :true,
    :address => 'smtp.gmail.com',
    :port => 587,
    :authentication => :plain,
    :user_name => 'testacct@gmail.com',
    :password => 'secret'
    #:enable_starttls_auto => true # for rails >= 2.2 && ruby >= 1.8.7
  }
  config.action_mailer.perform_deliveries = :true #try to force sending in development 
  config.action_mailer.raise_delivery_errors = :true 
  config.action_mailer.default_charset = "utf-8"
Run Code Online (Sandbox Code Playgroud)

Development.log:

Sent mail to sa23kdj@trash2009.com

Date: Fri, 18 Dec 2009 00:27:06 -0800
From: Test Email Acct <testacct@gmail.com>
To: sa23kdj@trash2009.com
Subject: Signup
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary=mimepart_4b2b3cda9088_634334302a5b7


--mimepart_4b2b3cda9088_634334302a5b7
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: Quoted-printable
Content-Disposition: inline

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww=
w.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang=3D'en' xml:lang=3D'en' xmlns=3D'http://www.w3.org/1999/xhtml'>=

  <head>
    <meta content=3D'text/html;charset=3DUTF-8' http-equiv=3D'content-typ=
e' />
  </head>
  <body>
    Welcome Email
    <p>
      user name:
      lfglkdfgklsdf
      activation link:
      http://localhost:3000/login
    </p>
  </body>
</html>

--mimepart_4b2b3cda9088_634334302a5b7--
Run Code Online (Sandbox Code Playgroud)

Jus*_*ner 14

把以下内容放入 config/environments/development.rb

config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true
Run Code Online (Sandbox Code Playgroud)

它将覆盖中的设置 config/environment.rb

对于rails,2.X您还需要设置:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :enable_starttls_auto => true,  
  :address        => "smtp.gmail.com",
  :port           => 587,
  :domain         => "domain.com",
  :user_name      => "username@domain.com",
  :password       => "secret_passsword",
  :authentication => :plain
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢关于`raise_delivery_errors = true`的提示.这帮助我更接近识别错误,这就是我只将"**name**"部分放在`user_name`的值中,而不是完整的电子邮件地址"**name@example.com**" .已完成电子邮件地址,已发送电子邮件!注意:我没有*需要设置`perform_deliveries = true`.我此时正在运行Rails 3.1.0. (2认同)

sar*_*dne 8

你需要使用true而不是:true.

:tls => true
...
config.action_mailer.perform_deliveries = true #try to force sending in development 
config.action_mailer.raise_delivery_errors = true 
Run Code Online (Sandbox Code Playgroud)

  • 它们可以互换,因为库可能只是检查它们是不是"零"而不是"假". (2认同)