Benutzername    Passwort    Autologin    
  Passwort vergessen       Registrieren  
beeForum Foren-übersicht » hal9000
Neues Thema eröffnen   Neue Antwort erstellen Hervorhebung entfernen


Mails als RSS-Feed
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
boris



Beiträge: 11057

Titel: Mails als RSS-Feed
Verfasst am: Do, 09 Jul 2009, 22:42
Beitrag
Antworten mit Zitat

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
Private Nachricht senden Website dieses Benutzers besuchen Rang:godmode methusalem 3. platz professioneller Sportangler Profi-Winzer (7x Hamm) Arcade-Meister, Rang 16 rainbow-cup
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    beeForum Foren-übersicht » hal9000 Seite 1 von 1
Gehe zu:  



ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Anzahl der versendeten Mails zu niedrig? svenfranzisko mod support 9 Do, 27 Apr 2006, 21:44 Letzten Beitrag anzeigen
Keine neuen Beiträge Änderung: RSS-Feed boris werkstatt 1 So, 03 Apr 2005, 11:13 Letzten Beitrag anzeigen
Keine neuen Beiträge beeForum als RSS-Feed boris werkstatt 2 Fr, 18 Feb 2005, 01:11 Letzten Beitrag anzeigen


Schreiben: nein. Antworten: nein. Bearbeiten: nein. Löschen: nein. Umfragen: nein.
phpBB © phpBB Group | impressum