Php 使用Zend_邮件发送前的垃圾邮件检查

Php 使用Zend_邮件发送前的垃圾邮件检查,php,zend-framework,spam,zend-mail,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,

我正在使用
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_抽象类(
library/Zend/Mail/Transport/Abstract.php
)中有一个
\u buildBody()
函数返回该值,但这是一个
受保护的
函数


谢谢

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


无论如何,要做到这一点,您可能必须实现一个自定义的
Zend\u Mail\u Transport
类,该类基于
Zend\u Mail\u Transport\u Smtp
的示例。transport类发送到SMTP服务器的任何数据,都必须重新路由到文本文件。据我粗略地看,这将是一项工作,但并非不可能。

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


无论如何,要做到这一点,您可能必须实现一个自定义的
Zend\u Mail\u Transport
类,该类基于
Zend\u Mail\u Transport\u Smtp
的示例。transport类发送到SMTP服务器的任何数据,都必须重新路由到文本文件。据我粗略地看,这将是一项工作,但并非不可能。

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

Spamc是Spamc/spamd对的客户端。它应该用在 在脚本中放置spamassassin以处理邮件。它将读取 从STDIN发送邮件,并将其假脱机到其与spamd的连接,然后读取 返回结果并将其打印到标准输出。Spamc的成本极低 加载时的开销,因此加载速度应该比 整个spamassassin计划

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

  • 将消息写入临时文件并运行
    shell\u exec('spamc
    ,或
  • 使用运行命令,然后通过
    STDIN
    发送消息

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

    Spamc是Spamc/spamd对的客户端。它应该用在 在脚本中放置spamassassin以处理邮件。它将读取 从STDIN发送邮件,并将其假脱机到其与spamd的连接,然后读取 返回结果并将其打印到标准输出。Spamc的成本极低 加载时的开销,因此加载速度应该比 整个spamassassin计划

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

  • 将消息写入临时文件并运行
    shell\u exec('spamc
    ,或
  • 使用运行命令,然后通过
    STDIN
    发送消息

  • 不要在你认为spamassassin可能不喜欢的地方发送电子邮件……你说得对,但我不知道邮件的内容。这是一个时事通讯wysiwyg应用程序,用户应该能够检查他的邮件是否可以被视为垃圾邮件。不要发送电子邮件,因为你必须假设spamassassin可能不喜欢它们……你说得对,但我不知道内容。这是一个时事通讯wysiwyg应用程序,用户应该能够检查他的消息是否可以被视为垃圾邮件。是的,我想模拟它。简言之,我需要真正地传达我的信息,对吗?将其发送到本地地址
    www data
    (php运行用户)并将其存储在Maildir中可能是个好主意?@Fabio将其发送到本地地址可能是最简单的方法。或者,如前所述,Zend的封装确实可以编写定制的
    Zend_Mail_Transport
    是的,我想模拟它。简言之,我需要真正地传达我的信息,对吗?将其发送到本地地址
    www data
    (php运行用户)并将其存储在Maildir中可能是个好主意?@Fabio将其发送到本地地址可能是最简单的方法。或者,如前所述,Zend的封装确实可以编写定制的
    Zend\u邮件\u传输