簡體   English   中英

嘗試使用Zend_Mail_Storage_Imap提取電子郵件時,“檢測到無效的標頭值”

[英]'Invalid header value detected' when trying to fetch email with Zend_Mail_Storage_Imap

我正在嘗試接收包含Zend_Mail_Storage_Imap的電子郵件,但在某些電子郵件上會不斷收到'Invalid header value detected'

我找到了導致崩潰的標頭到以下位置:

Content-Type: application/vnd.oasis.opendocument.text;
    name="=?UTF-8?Q?cc-demo-minutes-2014-09-09_-_=c3=a5_detta_=c3=a4r_en_kopia?=
 =?UTF-8?Q?_av_det_vanliga_mellanslagsbefriade=2c_eller_mellanslagsl?=
 =?UTF-8?Q?=c3=b6sa=2c_namnet_som_b=c3=b6r_bli_en_l=c3=a5ng_harang_p?=
 =?UTF-8?Q?=c3=a5_flera_MIME-rader.odt?="

雖然這是一個丑陋的文件名,但據我了解,它應該是有效的標頭。 我嘗試了幾個電子郵件驗證器,他們都同意這是有效的標頭。 Zend為什么會引發此異常,我該如何預防?

導致崩潰的代碼

$oMail = new Zend_Mail_Storage_Imap($aImapSettings);

foreach ($oMail as $iMessageNum => $oMessage) {
    if ($oMessage->isMultipart()) {
        // Multipart messages
        foreach (new RecursiveIteratorIterator($oMessage) as $oPart) { // <--crash

        } 
    }       
}

堆棧跟蹤

[07-Apr-2016 10:40:12 Europe/Stockholm] PHP Fatal error:  Uncaught exception 'Zend_Mail_Exception' with message 'Invalid header value detected' in /usr/local/zendsvr6/var/libraries/Zend_Framework_1/1.12.17/library/Zend/Mail/Header/HeaderValue.php:133
Stack trace:
#0 /usr/local/zendsvr6/var/libraries/Zend_Framework_1/1.12.17/library/Zend/Mail/Part.php(600): Zend_Mail_Header_HeaderValue::assertValid('application/vnd...')
#1 /usr/local/zendsvr6/var/libraries/Zend_Framework_1/1.12.17/library/Zend/Mail/Part.php(151): Zend_Mail_Part->_validateHeaders(Array)
#2 /usr/local/zendsvr6/var/libraries/Zend_Framework_1/1.12.17/library/Zend/Mail/Part.php(289): Zend_Mail_Part->__construct(Array)
#3 /usr/local/zendsvr6/var/libraries/Zend_Framework_1/1.12.17/library/Zend/Mail/Part.php(353): Zend_Mail_Part->_cacheContent()
#4 /usr/local/zendsvr6/var/libraries/Zend_Framework_1/1.12.17/library/Zend/Mail/Part.php(578): Zend_Mail_Part->countParts()
#5 /www/zendsvr6/website/application/app/exterior/email/AppMailReceiver.php(509): Zend_Mail_Part->rewind()
#6 /www/zendsvr6/website/applic in /usr/local/zendsvr6/var/libraries/Zend_Framework_1/1.12.17/library/Zend/Mail/Header/HeaderValue.php on line 133

我還發現這篇文章暗示更改internal_encoding將有所幫助。 就我而言,這並不能解決問題。

不知道該解決方案是否可以解決您的問題,但我相信是這樣的:

https://github.com/zendframework/zf1/pull/567

轉到您的library / Zend / Http / Client.php文件,並按照上面的鏈接中所述進行以下修復。

@@ -1592,6 +1592,11 @@ protected function _validateHeaderValue($value, $recurse = true)
             return;
         }

+        // Cast integers and floats to strings for purposes of header representation.
+        if (is_int($value) || is_float($value)) {
+            $value = (string) $value;
+        }
+
         if (! is_string($value) && (! is_object($value) || ! method_exists($value, '__toString'))) {

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM