2

次のコードを使用Zend_Mailして、電子メールメッセージを送信しています。

$mail = new Zend_Mail('UTF-8');
$mail ->setBodyText($plainBody)
   ->setBodyHtml($htmlBody)
   ->setSubject($subject)
   ->setFrom(FROM_ADDR, FROM_NAME)
   ->addTo($email, $name )
   ->addHeader(MY_HEADER, serialize( array( 'foo' => 'bar' ) ) )
;

準備したメッセージのスパム評価を確認する必要があり、SpamAssassin を使用して実行したいと考えています。

内容を含むファイルを作成して などを実行することを考えましたexec('spamc $filename')が、完全な MIME 本文でファイルの内容を取得するにはどうすればよいですか? _buildBody()Zend_Mail_Abstract クラス ( library/Zend/Mail/Transport/Abstract.php) に、それを返す関数があることに気付きましたが、それはprotected関数です。

ありがとう

4

2 に答える 2

0

受信者側でスパム チェックをシミュレートする必要があると想定しています。これは興味深いアイデアですが、得られる結果は 100% 現実的ではないことに注意してください。結局のところ、電子メールがスパムかどうかを判断するのに役立つ重要な情報の多くを追加するのは送信プロセスです (送信者の IP やルートなど)。

とにかく、これを行うには、おそらくZend_Mail_Transportの例に基づいてカスタム クラスを実装する必要がありZend_Mail_Transport_Smtpます。トランスポート クラスが SMTP サーバーに送信するデータは、テキスト ファイルに再ルーティングする必要があります。ざっと見た限りでは、少し手間はかかりますが、不可能ではありません。

于 2011-01-21T10:08:35.087 に答える
0

SpamAssasin を使用する場合は、次の方法で電子メール メッセージを実行しますspamc

http://spamassassin.apache.org/full/3.1.x/doc/spamc.html

Spamc は、spamc/spamd ペアの半分のクライアントです。メールを処理するスクリプトでは、spamassassin の代わりに使用する必要があります。STDIN からメールを読み取り、spamd への接続にスプールし、結果を読み取り、STDOUT に出力します。Spamc はロード時のオーバーヘッドが非常に小さいため、spamassassin プログラム全体よりもはるかに高速にロードできます。

次の方法でPHPで使用できます。

  1. メッセージを一時ファイルに書き込んで実行するshell_exec('spamc < message.tmp')、または
  2. proc_open()を使用してコマンドを実行し、経由でメッセージを送信しますSTDIN
于 2012-03-13T10:32:30.367 に答える