|
Autor |
Nachricht |
boris

Beiträge: 10868
|
Titel: Mails als RSS-Feed
Verfasst am: Do, 09 Jul 2009, 22:42 |
|
|
Das Problem
Man hängt irgendwo rum (Arbeit oder so) und kommt nicht so ohne weiteres an seine privaten E-Mails ran, GoogleMail (inkl. das dazugehörige Plugin in Firefox) will man nicht nutzen, SimpleMail (Mailclient für Firefox) kann man nicht nutzen, weil der Zugriff auf externe Mailserver geblockt wird.
Die Lösung
Der Zugriff auf den Mailserver muß von einem anderen Server erfolgen, d.h. man muß ein Skript aufrufen, das über HTTP erreichbar ist, das seinerseits aber dann den Mailserver anspricht.
Anwendung
Ich hab mir sowas als RSS-Feed gebaut, in Zusammenhang hiermit ist das ganz nützlich, um ab und zu mal sehen zu können, was für neue Mails reingekommen sind (und nicht nur, ob überhaupt welche da sind).
Das Skript greift also auf den Mailserver zu, holt die Header und Absender der letzten x Mails und gibt das Ergebnis im RSS-Format aus. Die URL zum Skript kann man dann als "dynamisches Lesezeichen" (RSS-Feed) in Firefox einbinden.
Sicherheit
Damit nicht irgend jemand, der die URL in Erfahrung bringt, die Betreffs der Mails durch Aufruf der URL abgreifen kann, braucht man einen Schutzmechanismus.
Die Abfrage von Benutzername und Passwort ist bei einem RSS-Feed wohl möglich, aber nicht wirklich toll, daher habe ich einen Schutz per Cookie eingebaut. Dafür verwende ich den beeTwitter-Cookie, logge mich also im Forum ein, gehe auf die Twitter-Seite, um den Cookie zu aktivieren und lese diesen dann im Mail-Skript aus. Bin ich berechtigt, bekomme ich die Mailheader angezeigt, sonst nicht.
Einzige Voraussetzung: das Mail-Skript muß im Forum-Pfad liegen, sonst kann es den Keks nicht auslesen.
Der Code
PHP-Code: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
<?
$int_maxmail = 20; // nur x letzte Mails zeigen
$int_userid = 0; // Benutzer-ID im Forum für den Cookie
// Cookie-protection
if ($_COOKIE["cookiename"] != $int_userid)
{
exit("401");
}
// Cookie verlängern
setcookie("cookiename", $_COOKIE["cookiename"], time() + 604800, "cookiepfad", "cookiedomain", 0);
// RSS-Datei erzeugen
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n";
echo "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns=\"http://my.netscape.com/rdf/simple/0.9/\">\n";
echo "<channel>\n";
echo "<title>beeMail</title>\n";
echo "<link>https://www.beehave.de</link>\n";
echo "<description>beeMail - home of humbug</description>\n";
echo "</channel>\n";
// Mails checken
$mail_server = "servername";
$mail_user = "username";
$mail_pass = "passwort";
$arr_mails = array();
$mbox = imap_open("{" . $mail_server . ":110/pop3/novalidate-cert}", $mail_user, $mail_pass);
if ($hdr = imap_check($mbox))
{
$anzmail = imap_num_msg($mbox);
if ($anzmail > 0)
{
for ($msg_count = max(1, $anzmail - $int_maxmail); $msg_count <= $anzmail; $msg_count++)
{
// Header der Nachricht holen
$header = imap_header($mbox, $msg_count);
// wichtige Daten bestimmen
$elements = imap_mime_header_decode($header->subject);
$subject = $elements[0]->text;
$from = $header->from[0];
$arr_mails[] = "<item>
<title>" . $from->mailbox . ": " . $subject . "</title>
<link>https://www.beehave.de</link>
</item>
";
}
}
}
imap_close ($mbox);
array_reverse($arr_mails);
foreach ($arr_mails as $mail)
{
echo $mail;
}
// RSS
echo "</rdf:RDF>\n";
?> |
Der "<link>" in den einzelnen Items ist natürlich nutzlos und kann wahrscheinlich auch weggelassen werden, das habe ich nicht probiert. Natürlich ist eine Verlinkung auf ein weiteres Skript möglich, das bei Klick die Mail ausliest, aber wenn man seine Mails komplett lesen will, kann ja auch direkt auf seinen Webmail-Account gehen.
Nützlich:
Der Befehl "imap_mime_header_decode" sorgt dafür, daß Betreffzeilen mit Umlauten, die normalerweise ungefähr so ankommen: "=?ISO-8859-1?Q?..." dekodiert und korrekt dargestellt werden.
____________ beehave - home of humbug ... [we can't afford to be neutral]
|
|
Nach oben |
|
|
 |
ähnliche Beiträge |
 |
Schreiben: nein. Antworten: nein. Bearbeiten: nein. Löschen: nein. Umfragen: nein.
|