ruby-on-rails - Sendmail 在 Linux 终端中工作,而不是在 Rails 3 中工作

标签 ruby-on-rails nginx sendmail

我正在运行带有 Rails 3.2.2 的 Ubuntu 10.04。

我刚刚安装并配置了 sendmail。当邮件通过终端发送时,它运行良好

但是当我尝试通过 Rails 调用它时,没有成功

虽然它看起来并不像失败了。我没有收到任何错误,并在我的控制台中看到了这一点:

#<Mail::Message:40338240, Multipart: false, Headers: <From: alert@email.com>, <To: chris@email.com>, <Subject: Hi chris, a testmail too you!>, <Mime-Version: 1.0>, <Content-Type: text/html>, <importance: High>, <X-Priority: 1>> 

我正在开发中,在我的 development.rb 中有以下设置:

config.action_mailer.delivery_method = :sendmail
config.action_mailer.sendmail_settings = { 
      :location => '/usr/sbin/sendmail', 
      :arguments => '-i -t' 
  } 
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true

我已经设置了一个带有相应 alert_mail.html.erb 的 actionmailer:

class UserMailer < ActionMailer::Base
  default from: "alert@email.com"
  def alert_mail(site)
    @site = site
    @user = site.user
    @url  = "http://example.com/login"
    mail(:to => @user.email_address, :subject => "Hi chris, a testmail too you!", :importance => "High", 'X-Priority' => '1')
  end
end

这就是我所说的:

UserMailer.alert_mail(site)

会不会是有权限的东西?

我尝试过的事情 - 尝试在生产模式下运行 - 将 sendmail 可执行文件更改为 777 - 尝试删除优先级设置 - 使用 rails server 而不是 nginx 运行它

我希望有人能帮助我,在此先感谢! (email.com 只是替代品,我使用的是有效域名)

编辑: 当我尝试通过 Rails 控制台执行邮件功能时,sadiqxs 的回答确实解决了问题。但是它仍然无法通过我的浏览器正常工作。奇怪的是,这似乎只发生在 nginx 中。当我停止 nginx 并启动 rails server 时,它就可以工作了。但是当我使用 nginx 作为服务器时,它不发送任何邮件。

最佳答案

我觉得你需要打电话

 UserMailer.alert_mail(site).deliver

关于ruby-on-rails - Sendmail 在 Linux 终端中工作,而不是在 Rails 3 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295065/

相关文章:

包含空格的 Nginx 重写

Linux:bash 脚本中的 sendmail

tcl - 如何使用 Tcl 中的 sendmail

ruby-on-rails - 将字符串转换为数组

django - 如何在Kubernetes中实际设置django静态文件的样式?

php - 在几秒钟内处理数千个请求的最佳 Nginx 配置

php - 将电子邮件转发到通讯组列表

ruby-on-rails - data-remote true 定义回调

ruby-on-rails - sqlite3在 rails 上:create_table使用collat​​e nocase

sql - 联接表记录不存在的Active Record