Holladiewaldfee,
Da bleibt für mich die Frage, ob man base64-Codierung generell nutzen kann für die Typen, die nicht plain-Text sind. Oder gibt es unter den eMail-Clients viele, die das nicht zurückübersetzen können? Verursacht base64 evtl. mehr Traffic, als für Multipart-Mails nötig wäre?
Ich verwende fast immer base64, ausser für Plaintext und HTML, da verwende ich meistens quoted-printable
Ich muss mich nun für die Codierung, also Content-Transfer-Encoding entscheiden. Welche Möglichkeiten hätte ich denn mit php4 sonst noch außer base64? Für quoted-printable habe ich keine Codierungsfunktion gefunden.
7Bit und 8Bit sind glaube ich noch ok. Wobei ich bei letzterem aber meine Zweifel habe ...
Quoted-Printable String Codieren
function quotedprintable_encode($input, $line_max = 76)
{ # Credits To: pob@medienrecht.org
$hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
$lines = preg_split("/(?:\r\n|\r|\n)/", $input);
$eol = "\r\n";
$escape = "=";
$output = "";
while( list(, $line) = each($lines) )
{
$line = rtrim($line); // remove trailing white space -> no =20\r\n necessary
$linlen = strlen($line);
$newline = "";
for($i = 0; $i < $linlen; $i++)
{
$c = substr($line, $i, 1);
$dec = ord($c);
if(($dec == 32)&&($i == ($linlen - 1)))
{ // convert spaceat eol only
$c = "=20"; }
elseif(($dec == 61)||($dec < 32 )||($dec > 126))
{ //always encode "\t", which is *not* required
$h2 = floor($dec/16); $h1 = floor($dec%16);
$c = $escape.$hex["$h2"].$hex["$h1"]; }
if((strlen($newline)+strlen($c))>=$line_max)
{ // CRLF is not counted
$output .= $newline.$escape.$eol; // soft line break; "=\r\n" is okay
$newline = ""; }
$newline .= $c;
}
$output .= $newline.$eol;
}
return trim($output);
}
Würde mich freuen, ein paar Anregungen zu bekommen von Leuten, die das auch schon mal gemacht haben.
Jep ... zu genüge, um nicht zu sagen: Bis zum Umfallen ;-)
Ciao,
Harry
Man weiß erst was man hatte, wenn man es verloren hat.
Intelligenz ist nicht zwingend etwas positives.