2016-04-07 2 views
2

Ich versuche, E-Mails mit Zend_Mail_Storage_Imap zu erhalten, bekomme aber immer noch 'Invalid header value detected' auf einigen E-Mails.'Ungültiger Header-Wert erkannt' beim Versuch, E-Mails mit Zend_Mail_Storage_Imap abzurufen

ich den Header gefunden haben, die den Absturz der folgenden verursacht:

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?=" 

Obwohl es eine hässliche Dateiname ist sollte es so weit gültige Header sein, wie ich verstehen. Ich habe ein paar E-Mail-Validatoren ausprobiert und alle stimmen zu, dass es sich um einen gültigen Header handelt. Warum wirft Zend diese Ausnahme und wie kann ich sie verhindern?

Der Code, der den Absturz

$oMail = new Zend_Mail_Storage_Imap($aImapSettings); 

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

     } 
    }  
} 

Stapelüberwachung

verursacht
[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 

Ich fand auch this post was darauf hindeutet, dass eine Änderung internal_encoding helfen würde. Es hat das Problem in meinem Fall nicht gelöst.

Antwort

0

nicht sicher, ob diese Lösung Ihr Problem beheben, aber ich glaube, so:

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

gehen Sie zu Ihrer Bibliothek/Zend/Http/Client.php Datei und gelten folgende Update, wie oben in Verbindung erwähnt.

@@ -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'))) {