Why doesn't this mail message decode correctly?

后端 未结 2 418

I have this code. It\'s from the Zend Reading Mail example.

$message = $mail->getMessage(1);

// output first text/plain part
$foundPart = null;
foreach (         


        
相关标签:
2条回答
  • 2021-01-06 10:38

    I ran into some similar issues while learning how to use Zend_Mail for reading emails. You will need to add additional logic that Zend_Mail doesn't implement, such as decoding encoded emails, and converting the character set. Here's what I'm doing after finding the plain text part:

    $content = $foundPart->getContent();
    
    switch ($foundPart->contentTransferEncoding) {
        case 'base64':
            $content = base64_decode($content);
            break;
        case 'quoted-printable':
            $content = quoted_printable_decode($content);
            break;
    }
    
    //find the charset
    preg_match('/charset="(.+)"$/', $foundPart->contentType, $matches);
    $charset = $matches[1];
    
    if ($charset == 'iso-8859-1') {
        $content = utf8_encode($content); //convert to utf8
    }
    
    0 讨论(0)
  • 2021-01-06 10:50

    This could be because of base64 encoding. The Zend_Mail docs say (under 'encoding'):

    ...All other attachments are encoded via base64 if no other encoding is given in the addAttachment() call or assigned to the MIME part object later.

    Try something like:

    echo base64_decode($foundPart->getContent());
    

    Also, read: http://framework.zend.com/manual/en/zend.mail.encoding.html

    Hope that helped somehow.

    0 讨论(0)
提交回复
热议问题