5

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

但我总是在服务器日志中收到以下错误(在 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

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

4

2 回答 2

5

您应该使用合作伙伴插件之一来使用 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 服务器,因此您的控制器代码应该没问题。

于 2013-04-03T07:19:49.367 回答
0

Pat 是对的,您不需要附加组件,只需像 stef 建议的那样配置您的 app.rb 即可。因此,例如,我们使用 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
  }
于 2013-09-19T15:56:59.510 回答