Seite 1 von 1
imap-Funktionen von PHP: Wie wirklichen Empfänger finden?
Verfasst: 05.02.2005, 22:04
von Southmedia
Ich habe heute mittag ein wenig mit den imap_* Funktionen von PHP herumgespielt.
Nun habe ich beispielhaft den Fall dass ich an einen Catchall-Account verschiedene Newsletter mit je passender eigener Adresse (
abakus-newsletter@example.org) schicke und diese per php auslesen und in eine Datenbank speisen will.
Wenn ich nun hier folgendes mache
Code: Alles auswählen
$headers = imap_header($mbox,$i);
echo $headers->to[0]->mailbox.", ";
echo $headers->to[0]->host."<br />\n";
bekomme ich leider den host und die mailbox die der Absender als Empfänger eingegeben hatte, also meist einen Verteiler oder eine sinnlose Adresse.
Wie komme ich an die
abakus-newsletter@example.org an die der Newsletter effektiv ausgeliefert wurde?
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Re: imap-Funktionen von PHP: Wie wirklichen Empfänger finden
Verfasst: 06.03.2005, 12:29
von Outman
Southmedia hat geschrieben:Ich habe heute mittag ein wenig mit den imap_* Funktionen von PHP herumgespielt.
Nun habe ich beispielhaft den Fall dass ich an einen Catchall-Account verschiedene Newsletter mit je passender eigener Adresse (
abakus-newsletter@example.org) schicke und diese per php auslesen und in eine Datenbank speisen will.
Wenn ich nun hier folgendes mache
Code: Alles auswählen
$headers = imap_header($mbox,$i);
echo $headers->to[0]->mailbox.", ";
echo $headers->to[0]->host."<br />\n";
bekomme ich leider den host und die mailbox die der Absender als Empfänger eingegeben hatte, also meist einen Verteiler oder eine sinnlose Adresse.
Wie komme ich an die
abakus-newsletter@example.org an die der Newsletter effektiv ausgeliefert wurde?
Hallo,
Die Funktion imap_headerinfo liest die Informationen des Nachrichten-Headers ein und gibt diese als Objekt zurück, wo hingegen imap_fetchstructure Daten zur Struktur der Mail liefert - ebenfalls als Objekt. Die Dritte im Bund ist imap_fetchbody welche den Body einer bestimmten Nachricht zurückliefert.
Beispiel:
Code: Alles auswählen
/* Verbindung zum Server herstellen */
function connect($host,$port,$boxname,$password)
{
return imap_open("\{$host/pop3:$port}INBOX",$boxname,$password);
}
/* Verbindung trennen */
function disconnect($handle)
{
imap_close($handle);
}
/* prüft ob UTF8-Dekodierung erfolderlich ist */
function decodeHeaderField($text2decode)
{
if(strpos($text2decode,'?iso-8859-1?Q?') != false)
{
return utf8_decode(imap_utf8($text2decode));
}
else
{
return $text2decode;
}
}
/* Dekodierte den als String übergebenen kodierten Text aus dem in $encoding angegebenen Format */
/* Soll der 76-Zeichen-Break nicht berücksichtigt werden, muss $convert76 false sein */
/* Sollen unnötige Whitespaces entfernt werden, dann $trimText = true */
function decode($text2decode,$encoding,$convert76 = true,$trimText = true)
{
/* Whitespaces entfernen */
if($trimText)
{
$text2decode = trim($text2decode);
}
/* 76-Zeichen-Break */
if($convert76)
{
$text2decode = str_replace("=\r\n","\n",$text2decode);
}
else
{
$text2decode = str_replace("=\r\n",'',$text2decode);
}
/* Dekodieren */
switch($encoding)
{
case 0:
return quoted_printable_decode($text2decode);
break;
case 1:
return $text2decode;
break;
case 2:
return imap_base64(imap_binary($text2decode));
break;
case 3:
return imap_base64($text2decode);
break;
case 4:
return quoted_printable_decode($text2decode);
break;
default:
case 5:
return $text2decode;
break;
}
}
$con = connect($_SESSION['host'],$_SESSION['port'],$_SESSION['boxname'],$_SESSION['password']);
if($con)
{
$headerinfo = imap_headerinfo($con,$msgno);
$structure = imap_fetchstructure($con,$msgno);
$subject = decodeHeaderField($headerinfo->subject);
$from = @decodeHeaderField($headerinfo->from[0]->personal);
$fromemail = $headerinfo->from[0]->mailbox.'@'.$headerinfo->from[0]->host;
echo '<h1>Test Mail</h1>';
echo '<h3>'.$subject.'</h3>';
echo '<p><b>'.$from.'</b> <'.$fromemail.'></h4>';
echo '<p><a href="index.php">Übersicht</a></p>';
echo '<pre>'.decode(imap_fetchbody($con,$msgno,1),$structure->encoding,false).'</pre>';
disconnect($con);
}
mfg. Nico