Mailheader - Codierung

PHP:
function imap_mime_header_encode( $text, $encoding, $charset )
{
	$retVal = '';
	switch( strtoupper($encoding) ) {
		case 'B':
			$retVal = '=?'.$charset.'?B?'.base64_encode($text).'?=';
			break;
		case 'Q':
			$retVal = '=?'.$charset.'?Q?'.imap_8bit($text).'?=';
	}
	return $retVal;
}

imap_mime_header_encode('Lesebestätigung !?', 'q', 'iso-8859-15')
 
Rufe die Mails mit einem Mailprogramm wie Thunderbird oder Outlook runter und schau dir mit STRG+U den Nachrichtenquelltext an. Dann siehst du ja was im endeffekt genau drinsteht. Vielleicht nur ein kleiner Fehler...
 
Kodierte und nichtkodierte Textstücke werden als Elemente im Array gespeichert. In deinem Fall wird als ein zweielementiges Array zurückgegeben.
Folgede Funktion sollte dir eine korrekt kodierte Zeichenkette zurückgeben:
PHP:
function mime_header_decode( $encodedStr, $outputEncoding=null, $inputEncoding=null )
{
	if( is_null($inputEncoding) ) {
		$inputEncoding = 'ASCII';
	}
	if( is_null($outputEncoding) ) {
		$outputEncoding = 'ISO-8859-1';
	}
	$parts = imap_mime_header_decode($encodedStr);
	$decoded = '';
	foreach( $parts as $part ) {
		if( $part->charset == 'default' ) {
			$decoded .= mb_convert_encoding($part->text, $outputEncoding, 'ASCII');
		} else {
			$decoded .= mb_convert_encoding($part->text, $outputEncoding, $part->charset);
		}
	}
	return $decoded;
}
 
Zurück