Hallo,
ich versuche momentan einen kleinen Email-Client zu erstellen. Nun bin ich dabei die Funktion zu erstellen, welche die Nachrichten vom pop3 Server ausliest. Dabei ergibt sich das für mich leider bisher unlösbare Problem der Umlaute in den abgerufenen Emails -- diese werden immer als unbekannte Zeichen dargestellt (im Firefox ein �), wie ich es auch anfange. Meine Versuche sind unten im Skript ersichtlich (wo die vielen //????// stehen) ... ich bin für jede Hilfe dankbar.
Das Skript, dass ich verwende, sieht etwa so aus:
<?
function get_mime_type(&$structure)
{
$primary_mime_type = array("TEXT", "MULTIPART", "MESSAGE", "APPLICATION", "AUDIO", "IMAGE", "VIDEO", "OTHER");
if ($structure->subtype) {
return $primary_mime_type[(int) $structure->type] . '/' . $structure->subtype;
}
return "TEXT/PLAIN";
}
function get_part($stream, $msg_number, $mime_type, $structure = false, $part_number = false)
{
$prefix = "";
if (!$structure) {
$structure = imap_fetchstructure($stream, $msg_number);
}
if ($structure) {
if ($mime_type == get_mime_type($structure)) {
if (!$part_number) {
$part_number = "1";
}
$text = imap_fetchbody($stream, $msg_number, $part_number);
if ($structure->encoding == 3) {
return imap_base64($text);
} else if ($structure->encoding == 4) {
return imap_qprint($text);
} else {
return $text;
}
}
if($structure->type == 1)
{
while (list($index, $sub_structure) = each($structure->parts)) {
if ($part_number) {
$prefix = $part_number . '.';
}
$data = get_part($stream, $msg_number, $mime_type, $sub_structure, $prefix . ($index + 1));
if ($data) {
return $data;
}
}
}
}
return false;
}
$hostname = "pop3.web.de";
$username = "irgendwer@irgendwo.de";
$kennwort = "sososososo";
$mailbox = imap_open("{".$hostname."}", $username, $kennwort);
$mails = imap_fetch_overview($mailbox,"1:*", FT_UID);
$nachricht_tell = "";
$size=count($mails);
$cmsg = 0;
for ($i=$size-1; $i>=0; $i--) {
$cmsg++;
$value = $mails[$i];
$mail = get_part($mailbox, $value->msgno, "TEXT/PLAIN");
$mail2 = get_part($mailbox, $value->msgno, "TEXT/HTML");
if ($mail2 != ''){
$msgBody = $mail2;
}else{
$msgBody=ereg_replace("\n","<br>",$mail);
$msgBody=preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i","$1http://$2", $msgBody);
$msgBody=preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<A TARGET=\"_blank\" HREF=\"$1\">$1</A>", $msgBody);
$msgBody=preg_replace("/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","<A HREF=\"mailto:$1\">$1</A>",$msgBody);
};
echo $msgBody;
}
imap_close($mailbox);
?>
Danke schonmal,
Alex