3

Rails3.2.2でUbuntu10.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にchmodしました-優先度設定を削除しようとしました-nginxの代わりにrailsサーバーで実行しました

誰かが私を助けてくれることを願っています、事前に感謝します!(email.comは単なる代替品であり、有効なドメインを使用しています)

編集: 私がrailsコンソールを介してメール機能を実行しようとすると、sadiqxsの答えは確かに問題を解決します。しかし、私のブラウザでは、想定どおりに機能しません。奇妙なことに、これはnginxでのみ発生しているようです。nginxを停止し、Railsサーバーを起動すると、動作します。しかし、nginxがサーバーの場合、メールは送信されません。

4

2 に答える 2

1

電話する必要があると思います

 UserMailer.alert_mail(site).deliver
于 2013-01-12T16:44:22.597 に答える
0

sadiqxs ソリューションは、私の質問に対する回答の一部です。関数を間違って呼び出していた問題を修正します。しかし、それでも私にメールを送信していませんでした。しばらくすると、なんとか機能するようになりました。

私が発見したことの 1 つは、私が監督した別のメール ログが実際にあったことです。

/var/log/mail.log.1

次のエラーが表示されました。

sendmail[4453]: NOQUEUE: SYSERR(nobody): can not chdir(/var/spool/mqueue-client/): Permission denied

ls -ld /var/spool/mqueue-client/ を使用して、ディレクトリが smmsp グループによって制限されていることを確認しました。

drwxrws--- 2 smmsp smmsp 4096 2013-01-12 17:51 /var/spool/mqueue-client/

そのため、nobody ユーザー (エラー SYSERR(nobody) から) を smmsp グループに追加しました。

usermod -a -G smmsp nobody

再度テストしましたが、まだ機能しません。ログを確認したところ、同じエラーが発生しました。サーバーを再起動したことを確認するために、エラーメッセージが少し変更されました。

NOQUEUE: SYSERR(nobody): can not write to queue directory /var/spool/mqueue-client/ (RunAsGid=65534, required=115): Permission denied

しばらく役に立たないものを検索して試した後、/etc/psswd ファイルで nobody のプライマリ グループを 115 (smmsp) に変更することにし、次の設定を見ました。

nobody:x:65534:65534:nobody:/nonexistent:/bin/sh

nobody:x:65534:115:nobody:/nonexistent:/bin/sh

これで問題は解決し、現在メールを送信しています。これが最善の解決策ではないことは理解していますが、特定の GID が必要なため、他の方法で誰もアクセスできないようにする方法がわかりません。ここの誰かがそうしてくれることを願っています。

于 2013-01-13T10:28:42.823 に答える