在Heroku中发送Padrino的电子邮件

时间:2013-03-22 13:53:18

标签: ruby heroku padrino mailing

我正在尝试通过Padrino中的sendmail发送电子邮件。我完成了指定here的配置(配置快速使用

但是我总是在服务器日志中出现以下错误(在Heroku或localhost上):

app[web.1]: sh: Illegal option - 
app[web.1]: Errno::EPIPE - Broken pipe:

我安装了mail gem,我正在使用Padrino 0.10.7

我正在使用它,发送电子邮件:

post :create do
  email(:from => "tony@reyes.com", :to => "john@smith.com", :subject => "Welcome!", :body=>"Body")
end

这几乎就是我所有的......

2 个答案:

答案 0 :(得分:5)

你应该使用其中一个parter插件与Heroku一起发送邮件。

一个很好的选择是Sendgrid

heroku addons:add sendgrid:starter --app=your_app_name

然后在App类中的app.rb中的Padrino应用程序中:

set :delivery_method, :smtp => { 
  :address              => "smtp.sendgrid.net",
  :port                 => 587,
  :domain               => 'heroku.com',
  :user_name            => ENV['SENDGRID_USERNAME'],
  :password             => ENV['SENDGRID_PASSWORD'],
  :authentication       => :plain,
  :enable_starttls_auto => true  
}

您可以将这些替换为其他外部SMTP服务器的设置,或者查看Mandrill以获取交易电子邮件。

我怀疑您看到的Errno :: EPIPE错误是无法连接到有效的SMTP服务器,所以您的控制器代码应该没问题。

答案 1 :(得分:0)

Pat是对的,你不需要一个附加组件,只需配置你的app.rb就像stef建议的那样,你很高兴。因此,例如,我们使用gmail,我们的配置看起来像这样:

  set :delivery_method, :smtp => {
    :address              => "smtp.domain.com",
    :port                 => 587,
    :domain               => 'rails.domain.com',
    :user_name            => "rails@domain.com",
    :password             => "super-secret",
    :authentication       => "plain",
    :enable_starttls_auto => true,
    :openssl_verify_mode  => OpenSSL::SSL::VERIFY_NONE
  }