2009-12-10 231 views
2

我在轨道上的红宝石新,我已经阅读了很多教程,但我仍然无法弄清楚什么是错的。如何使用Gmail帐户从ruby发送电子邮件,例如?

我已经成立的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  => '[email protected]', 
    :password  => 'mypassword' 
} 

然后,我有一个与我使用的baseApp传来了一些代码,并执行以下操作:

UserMailer.deliver_forgot_password(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错误。现在有什么问题?

感谢, 布赖恩

+0

您使用的是哪种版本的导轨? – Mark 2009-12-10 17:20:08

+0

毫米,如果我右键点击项目,我会看到Ruby平台:内置JRuby 1.2.0。那是你想知道的吗? – 2009-12-10 17:56:35

回答

1

Gmail的端口应该是587或465

,并添加

:tls => true, 

你已经安装了ActionMailerTLS宝石?

+0

它也不工作:( – 2009-12-10 16:42:56

+0

这个问题可能会帮助你http://stackoverflow.com/questions/801005/successfully-installed-actionmaileroptionaltls-to-send-using-gmail – Mark 2009-12-10 16:44:34

+0

谢谢马克我会尝试安装action_mailer_tls插件 我唯一的疑问是,我没有得到在该帖子中提到的错误。我是否必须安装它呢?也许我的错误通知禁用... – 2009-12-10 17:08:34

1

这样的轨道2.3.2的新方法是

:enable_starttls_auto => true 

无需额外的插件。

+0

是的。我刚刚读过这个地方。但它仍然无法正常工作。 我为此配置的所有内容为: - At development.rb: config.action_mailer。DELIVERY_METHOD =:SMTP config.action_mailer.perform_deliveries =真 config.action_mailer.smtp_settings = { :enable_starttls_auto =>真, :地址=> “smtp.gmail.com”, :端口=> 587, :域名=> “domain.com”, :USER_NAME => “[email protected]”, :密码=> “密码”, :认证=>:普通 } 我需要别的东西,使这个工作?我没有得到任何例外...我只是没有收到电子邮件。 – 2009-12-10 17:55:10

+0

我认为这是建立在development.rb 你有行 config.action_mailer.raise_delivery_errors =真 这是默认设置为假,也许尝试设置为true,看是否需要采取邮寄给你任何交货错误。 – KJF 2009-12-11 18:38:03

1

在我的Mac上,我不得不开启postfix来发送电子邮件。也许你没有一个类似的邮件程序打开能够发送电子邮件。什么是Windows 7,我不知道。

+0

我也不知道。我想也许它不工作,因为我的ruby版本。当我右键点击我的项目时,我看到“Ruby平台:内置JRuby 1.2.0”。我可以选择那个或者1.8.6-p287我应该下载一个更新的vesion吗? – 2009-12-10 18:11:19

+0

如果你可以在日志中看到打印的电子邮件,那么你的ruby版本不应该成为问题。也许你需要Windows的IIS或sendmail,但我不熟悉Windows的开发。我不想开始一场激烈的战争,但是你可能会考虑创建一个基于Linux的虚拟机,并在那里开发。在Linux或Mac OS X上开发是一种更好的体验,并且会有更多熟悉环境的人员能够帮助您解决这些问题。 – danengle 2009-12-10 22:27:28

相关问题