Php Zend_Mail and=0D=0A=3D=3D=3D=3D=3D=3D=3D

Php Zend_Mail and=0D=0A=3D=3D=3D=3D=3D=3D=3D,php,email,zend-framework,Php,Email,Zend Framework,我正在编写一个帮助台管道处理程序,将传入的电子邮件作为帮助台通知单的答复进行管道处理。有些电子邮件发送得非常好,另一些邮件则是一堆乱七八糟的文本,所有的邮件都被塞进了一根巨大的字符串中。有人知道如何把它解码成纯文本吗 作为参考,这是我的邮件解析器函数: public function parseEmailMessage(Zend_Mail_Message $msg) { if ($msg->isMultiPart()) { $arrAttachments = arr

我正在编写一个帮助台管道处理程序,将传入的电子邮件作为帮助台通知单的答复进行管道处理。有些电子邮件发送得非常好,另一些邮件则是一堆乱七八糟的文本,所有的邮件都被塞进了一根巨大的字符串中。有人知道如何把它解码成纯文本吗

作为参考,这是我的邮件解析器函数:

public function parseEmailMessage(Zend_Mail_Message $msg)
{
    if ($msg->isMultiPart()) {
        $arrAttachments = array();
        $body = '';
        // Multipart Mime Message
        foreach (new RecursiveIteratorIterator($msg) as $part) {
            try {

                $mimeType = strtok($part->contentType, ';');

                // Parse file name
                preg_match('/name="(?<filename>[a-zA-Z0-9.\-_]+)"/is', $part->contentType, $attachmentName);

                // Append plaintext results to $body
                // All other content parts will be treated as attachments
                switch ($mimeType) {
                    case 'text/plain':
                        $body .= trim($part->getContent()) . "\n";
                        break;
                    case 'text/html':
                        $body .= trim(strip_tags($part->getContent));
                        break;
                    default:
                        $arrAttachments[] = array(
                            'attachment_mime' => $mimeType,
                            'attachment_name' => $this->filterFileName($attachmentName['filename']),
                            'base64data' => trim($part->getContent())
                        );
                }

            } catch (Zend_Mail_Exception $e) {
                // ignore
            }
        }

        return array($body, $arrAttachments);
    } else {
        // Plain text message
        return array(trim($msg->getContent()), array());
    }
}
公共函数parseEmailMessage(Zend_Mail_Message$msg)
{
如果($msg->isMultiPart()){
$arrAttachments=array();
$body='';
//多部分Mime消息
foreach(新的递归迭代器($msg)作为$part){
试一试{
$mimeType=strtok($part->contentType,;”);
//解析文件名
preg\u match('/name=“(?[a-zA-Z0-9.\-\u]+)”/is',$part->contentType,$attachmentName);
//将纯文本结果附加到$body
//所有其他内容部分将被视为附件
交换机($mimeType){
“文本/普通”大小写:
$body.=trim($part->getContent())。“\n”;
打破
案例“text/html”:
$body.=trim(带标签($part->getContent));
打破
违约:
$ArraAttachments[]=数组(
“附件\u mime”=>$mimeType,
'attachment_name'=>$this->filterFileName($attachmentName['filename']),
'base64data'=>trim($part->getContent())
);
}
}捕获(Zend_邮件例外$e){
//忽略
}
}
返回数组($body,$arrAttachments);
}否则{
//纯文本消息
返回数组(trim($msg->getContent()),数组());
}
}

我猜内容类型没有正确指定,Zend不知道如何解码。我知道我以前见过这种情况,但我不记得它是在哪里或如何“解决”的


看起来引用的可打印文件被当作纯文本处理

很抱歉,我来这里是想看看=0D=0A=3D=3D=3D=3D是关于什么的。我们的一些脚本也会发生这种情况——如果我正确地记得我要找的是什么,苹果Mac应该受到责备。php中的函数称为quoted_printable_decode();你帮我省去了几个小时的挫折,谢谢你