例如,如何使用Gmail帐户从ruby发送电子邮件?

时间:2009-12-10 16:31:38

标签: ruby-on-rails ruby

我对ruby on rails很新,我已经阅读了很多有关这方面的教程,但我仍然无法弄清楚是什么问题。

我已经设置了environment.rb,底部有以下几行:

ActionMailer::Base.delivery_method = :smtp

ActionMailer::Base.default_content_type = "text/html"

ActionMailer::Base.smtp_settings = {
  :address        => 'smtp.gmail.com',
  :port           => 25,
  :domain         => 'gmail.com',
  :authentication => :login,
  :user_name      => 'myname@gmail.com',
  :password       => 'mypassword'
}

然后,我有一些我正在使用的baseApp附带的代码,它执行以下操作:

UserMailer.deliver_forgot_password(self)

self 是用户对象,包含电子邮件,登录等。

该方法(属于UserMailer类)具有以下代码:

  def forgot_password(user)
    setup_email(user)
    @subject += "Forgotten password instructions"
    #{user.password_reset_code}
    @body[:url]  = "http://#{Setting.get(:site_url)}/users/reset_password/#"

  end

protected
    def setup_email(user)
      @recipients  = "#{user.email}"
      @from        = "#{Setting.get(:support_name)} <#{Setting.get(:support_email)}>"
      @subject     = "[#{Setting.get(:site_name)}] "
      @sent_on     = Time.now
      @body[:user] = user

      # Get Settings
      [:site_name, :company_name, :support_email, :support_name].each do |id|
        @body[id] = Setting.get(id)
      end
    end

嗯,电子邮件很好,我已经检查了他们做加注检查,但它没有发送......而且它也没有让我异常。

现在我在尝试发送电子邮件时遇到Errno :: ECONNREFUSED错误。现在怎么了?

谢谢, 布赖恩

3 个答案:

答案 0 :(得分:1)

Gmail端口应为587或465。

并添加

:tls => true,

您是否安装了ActionMailerTLS Gem?

答案 1 :(得分:1)

从rails 2.3.2开始这样做的新方法是

:enable_starttls_auto => true

无需额外的插件。

答案 2 :(得分:1)

在我的Mac上,我必须打开postfix才能收到要发送的电子邮件。也许您没有打开能够发送电子邮件的类似邮件程序。那是什么,对于Windows 7,我不知道。