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 回答