使用 Zend_Mail 获取邮件源

Posted

技术标签:

【中文标题】使用 Zend_Mail 获取邮件源【英文标题】:Get mail source using Zend_Mail 【发布时间】:2011-11-02 12:32:10 【问题描述】:

如何使用 Zend_Mail (POP3) 获取邮件源(标题、正文、边界 - 全部作为纯文本)。

它默认返回解析的部分,我需要原始消息源。

【问题讨论】:

【参考方案1】:

Zend Mail 中没有这种方法。

但你可以查看类源,看看如何直接向邮件服务器发送命令以获取消息源。

【讨论】:

【参考方案2】:

也许您可以使用Zend_Mail_Storage_Pop3 类的getRawHeader()getRawContent() 方法。是否足以满足您的目的?

Some API docs(我在参考指南中没有找到):

【讨论】:

【参考方案3】:

如果你有 Zend_Mail 实例,你可以得到解码后的内容:

/** @var $message Zend_Mail */
echo $message->getBodyText()->getRawContent();

【讨论】:

【参考方案4】:

我为此制作了自己的图层:

    /**
 * Transport mail layer for retrieve content of message
 *
 * @author Petr Kovar
 */
class My_Mailing_Transport extends Zend_Mail_Transport_Abstract

    protected $_messageContent;

    /**
     * Only assign message to some variable
     */
    protected function _sendMail()

        $this->_messageContent = $this->header . Zend_Mime::LINEEND . $this->body;
    

    /**
     * Get source code of message
     * 
     * @return string
     */
    public function getMessageContent()
        return $this->_messageContent;
    


而不仅仅是这样称呼:

$transport = new My_Mailing_Transport();
$transport->send($mail);
return $transport->getMessageContent(); 

【讨论】:

以上是关于使用 Zend_Mail 获取邮件源的主要内容,如果未能解决你的问题,请参考以下文章

使用 Zend_Mail 时如何验证邮件是不是已发送?

Zend_Mail 在邮件正文中带有法语字符

如何使用 Zend_Mail、sendmail 和 localhost 发送电子邮件?

Zend_Mail 发送的电子邮件被视为垃圾邮件

使用 Zend_mail 时,我的电子邮件似乎被视为垃圾邮件,通过 Outlook 发送而没有?

在 Zend Framework 2 中使用 Zend_Mail + Zend_Mime 创建 HTML 电子邮件