0

私はこれを整理しようとして頭をぶつけてきました...手がかりがあれば大歓迎です。

eximを実行しているUbuntu 12.04サーバーでローカルにPHPMailers SMTPクラスを介してメールを送信しています。10 件のメッセージのみを送信すると、すべて正常に動作します。ただし、260 以上のメッセージをキューに入れ、それらを次々に送信しようとすると、次の行で最大 30 個のメッセージが返されることを保証できます。

MAIL not accepted from server

それらはすべて同じアドレスに送信されます (そして、他の 230 は正常にそこに到達します)。時々、exim のキューが機能していることを確認できます。何が原因で、なぜこの種のエラーが発生しないのですか? 「メール」コマンドを使用していますか?

前もって感謝します。

ベン

PS: 実際には SMTP 出力からメッセージ ID を抽出しているため、mail コマンドは使用していません。

アップデート

PHPMailers の class.smtp.php ファイルをさらに掘り下げ、Mail 関数内に var_dump を 1 つまたは 2 つ追加し、デバッグ レベルを 4 まで上げました (すべての SMTP 応答が表示されるように)。関数がソケットから空白行を読み取っているよう$this->getLines()です...これをclass.smtp.phpが解釈し(おそらく間違って)、救済します。これは有効な応答ですか?telnet が何も返さないのはなぜですか?

4

3 に答える 3

0

受け取るエラーは、それよりも有益なはずです。

ERROR: MAIL not accepted from server: 550 Tarpit active for...

またはそのようなもの。メッセージの2番目の部分は、エラーが何であるかを示しているはずです。それ以外の場合は、メールログメッセージ(/ var / log / messages、/ var / log / mail *など)で理由を確認できるはずです。

更新:これが私がそれを言った理由です:

if($code != 250) {
  $this->error =
    array("error" => "MAIL not accepted from server",
          "smtp_code" => $code,
          "smtp_msg" => substr($rply,4));
  if($this->do_debug >= 1) {
    echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . '<br />';
  }
  return false;
}

...したがって、エラーには、「サーバーからMAILが受け入れられません」だけでなく、SMTPコードやメッセージも含まれているはずです。

とにかく、エラーの理由はサーバーによってログに記録され、/ var / log / exim4/rejectlogまたは/var/ log / exim4/mainlogなどで利用可能である必要があります。

于 2012-07-18T13:44:54.000 に答える
0
  1. sleep(1); を入れてみましたか?メール間の遅延?一定時間内に送信できるメールの数に制限がある場合があります。

  2. そのエラーが発生した時間を確認してください。スクリプトはどのくらいの期間動作していましたか? メールサーバーのログイン期限が切れているようです。メールを少量ずつ分割し、20 通程度のメールを送信したら、新しいログインを行います。

于 2012-07-18T13:39:49.043 に答える
0

1日前にPHPMailerクラスで同じ問題が発生しました.エラーメッセージが表示MAIL not accepted from server:されました.エラーの詳細はありません. 私は簡単な解決策を持っています。私は行うSetFrom("my@email.com", "My Name")前に行いSend()、それは機能します。SMTPサーバーを介して送信するために「FROM」ヘッダーを必要とするSMTPサーバーに関するものだと思います。このスレッドに来て、私と同じ問題を抱えている人に役立つことを願っています。

于 2015-03-10T05:00:09.600 に答える