使用Zend_Mail发送之前的垃圾邮件检查

时间:2011-01-21 10:03:42

标签: php zend-framework spam zend-mail

我正在使用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主体获取文件内容? 我注意到Zend_Mail_Abstract类(_buildBody())中有一个library/Zend/Mail/Transport/Abstract.php函数返回该函数,但这是一个protected函数。

由于

2 个答案:

答案 0 :(得分:0)

我假设您想要在收件人端模拟垃圾邮件检查。这是一个有趣的想法,但请注意,它给你的结果将远非100%现实。毕竟,这是发送过程,它增加了许多重要信息,有助于确定电子邮件是否是垃圾邮件(例如发件人IP和路由。)

无论如何,要做到这一点,您可能必须根据Zend_Mail_Transport的示例实现自定义Zend_Mail_Transport_Smtp类。传输类发送到SMTP服务器的任何数据都必须重新路由到文本文件。据我所知,粗略地看一眼,这将是一项工作,但并非不可能。

答案 1 :(得分:0)

如果您想使用SpamAssasin,请通过spamc运行您的电子邮件:

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

  

Spamc是spamc / spamd对的客户端的一半。它应该用于   spamassassin在脚本中处理邮件的地方。它会读取   来自STDIN的邮件,并将其连接到与垃圾邮件的连接,然后阅读   结果返回并打印到STDOUT。 Spamc极低   加载开销,因此加载速度要快得多   整个spamassassin计划。

您可以通过以下方式在PHP中使用:

  1. 将邮件写入临时文件并运行shell_exec('spamc < message.tmp')
  2. 使用proc_open()运行命令,然后通过STDIN发送消息。