Problem mit Sonderzeichen

kevkev

Erfahrenes Mitglied
Hi,

Wenn Ich eine e-Mail mit imap entfange, und diese direkt ausgebe, bekomme Ich folgende Ausgabe:
---
=?iso-8859-1?B?MTIzNDU2Nzg5MCAhIqckJSYvKCk9P2AgtN8gKyMqJ/zk9tzE1i0uLDs6?= =?iso-8859-1?B?XyBAXrA=?
---

Der original Betreff war das:
---
1234567890 !"§$%&/()=?` ´ß +#*'üäöÜÄÖ-.,;:_
---

Ich probier schon ewig mit imap_qprint, imap_utf7 und was weiß Ich rum, aber bis jetzt habe Ich es nicht geschafft, diesen so zu decodieren, damit wieder der richtig angezeigt wird :(!

gruß Kevin
 
Probier mal Folgendes:
PHP:
<?php

	function decodeFieldValue($charset, $encoding, $string)
	{
		if( strlen($string) <= 0 ) {
			return false;
		}
		switch( strtolower($encoding) ) {
			case 'b':
				$string = base64_decode($string);
				break;
			case 'q':
				$string = quoted_printable_decode($string);
				break;
			default:
				return false;
		}
		if( strtolower($charset) == 'utf-8' && strtolower($charset) != ini_get('default_charset') ) {
			$string = utf8_encode($string);
		}
		return $string;

	}



	$patterns = array(
		'encoded-word'	=> '=\?([^?]+)\?([bq])\?([\x21-\x3E\x40-\x7E]+)\?='
	);
	$string = preg_replace('/('.$patterns['encoded-word'].')(?:\x09|\x0A|\x0D|\x20)+('.$patterns['encoded-word'].')/is', '\1\5', $string);
	$string = preg_replace('/'.$patterns['encoded-word'].'/eis', 'decodeFieldValue("\1", strtolower("\2"), "\3")', $string);

?>
Weitere Informationen in der RFC 2047.
 
Zurück