![](/img/trans.png)
[英]How to do batch retreival of email using Zend_Mail_Protocol_Imap or 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.