PHP-Scripts: Mail2APNS via Prowl oder "Push-Mail für Schotten - Teil II"

Dieses Thema im Forum "iPhone" wurde erstellt von Bananenbieger, 07.07.09.

  1. Bananenbieger

    Bananenbieger Echter Boikenapfel

    Dabei seit:
    14.08.05
    Beiträge:
    23.809
    Zustimmungen:
    1.265
    Nachdem schon eine Lösung existiert, mit der mal sich via BeeJiveIM und Jabber über eintreffende Mails benachrichtigen lassen kann, werden wir heute mal das ganze mit dem gerade erschienen Prowl machen.


    Benötigt werden: Prowl, PEAR Mail_Mime, ProwlPHP und natürlich ein Server, welcher a) PHP-CLI hat und b) Mails an ein Script weitergeben kann (ergo auch einen Mailserver).

    ProwlPHP gibt es hier: http://github.com/Fenric/ProwlPHP/tree/master
    Mail_Mime lässt sich über PEAR installieren bzw. hier downloaden: http://pear.php.net/package/Mail_Mime

    Einfach folgende zwei Scripts auf den Server in ein leeres Verzeichnis packen (z.B. /srv/mail2apns), ProwlPHP.php ins gleiche Verzeichnis wie die beiden Scripts legen und Mail_Mime ins Unterverzeichnis Mail kopieren (z.B. /srv/mail2apns/Mail).

    Danach die Konfigurationsvariablen in mail2apns.php setzen. Beispielhaft habe ich mal ein paar Daten eingetragen.

    mail2apns.php (an dieses Script die Mails pipen):
    Code:
    #!/usr/bin/php
    <?php
    // Mail2APNS Gateway for Prowl - Version 0.9
    //   Copyright (C) 2009 Bananenbieger. No Rights Reserved.
    // 
    // MAIL2APNS.PHP - Process incoming mail
    //
    //
    // Configuration
    //
    $prowl_apikey="Hier den API-Key eintragen - API-Keys lassen sich auf der Prowl-Website erzeugen";
    $prowl_appname="Mail"; // App-Name displayed in Prowl
    $prowl_path="/srv/apns"; // Path, where the prowl.pl resides
    //
    // Do not change anything below this.
    
    
    
    
    include("Mail/mimeDecode.php");
    
    // read eMail from stdin
    $fd = fopen("php://stdin", "r");
    $email = "";
    while (!feof($fd)) {
        $email .= fread($fd, 1024);
    }
    fclose($fd);
    
    $params['include_bodies'] = true;
    $params['decode_bodies'] = true;
    $params['decode_headers'] = true;
    $params['input'] = $email;
    
    $structure = Mail_mimeDecode::decode($params);
    /*echo "\nTo: ";
    echo $structure->headers['to'];
    echo "\nSubject: ";
    echo $structure->headers['subject'];
    echo "\nBody: ";
    echo $structure->parts[0]->body;*/
    
    $from_raw=$structure->headers['from'];
    $from=trim(substr($from_raw,0,strpos($from_raw,"<")-1));
    $prowl_event="Neue eMail empfangen";
    $message="\nVon: ". $from. "\nBetreff: ".$structure->headers['subject']." \n\n". substr($structure->parts[0]->body,0,160)."...";
    $to=$structure->headers['to'];
    
    include("sendmessage_apns_prowl.php");
    
    ?>
    
    sendmessage_apns_prowl:
    Code:
    <?
    include('ProwlPHP.php');
    $prowl = new Prowl($prowl_apikey);
    $prowl->push(array(
                    'application'=>$prowl_appname,
                    'event'=>$prowl_event,
                    'description'=>$message,
                    'priority'=>0
                ));
    ?>
    
    Wenn alles richtig gemacht wurde, bekommt Ihr nun über eintreffende Mails eine APN. Im

    Mit einer leichten Änderung kann dieses Script auch für andere Dinge verwendet werden ;)

    Und so sieht es aus, wenn es fertig ist:
    [​IMG]
    [​IMG]
    Zuletzt von einem Moderator bearbeitet: 11.07.09
  2. El Pollo Diablo

    El Pollo Diablo Morgenduft

    Dabei seit:
    20.07.09
    Beiträge:
    1
    Zustimmungen:
    0
    Vielen Dank für dieses Script!
    Mir ist aber aufgefallen, dass die ersten 160 Zeichen des Mailinhaltes nicht mitgeschickt werden(sieht man auch auf deinen Screenshots). Ich habe dann probeweise mal das "->parts[0]" aus Zeile 46 gelöscht, dann geht es bei mir.
  3. underwaterdub

    underwaterdub Antonowka

    Dabei seit:
    16.04.08
    Beiträge:
    62
    Zustimmungen:
    2
    Haha.. klasse Idee..

    Wenn ich nicht schon MobileMe hätte, würde ich es mal ausprobieren...
  4. Bananenbieger

    Bananenbieger Echter Boikenapfel

    Dabei seit:
    14.08.05
    Beiträge:
    23.809
    Zustimmungen:
    1.265
    Du kannst ja alles mögliche damit machen. Ist ja nicht auf Mails limitiert.
  5. AndyH

    AndyH Antonowka

    Dabei seit:
    23.01.09
    Beiträge:
    113
    Zustimmungen:
    4
    Ich hab das Script mal als Inspiration genommen und mir einen Push-Service für Twitter gebastelt.
    Zusätzlich zu ProwlPHP braucht man noch twitter-php .
    Einfach mit beliebigem Zeitintervall in die crontab und das Script pusht beim Aufruf den neuesten neuen Tweet an Prowl.
    Könnte man natürlich noch verfeinern (alle neuen Tweets, oder die Anzahl der neuen Tweets, oder ... ), aber mir reichts so.
    Code:
    #!/usr/bin/php
    <?php
    //
    // Twitter2Prowl - V0.1
    //
    // 
    $tuser = 'Twitter Username';
    $tpass = 'Twitter Passwort';
    $apikey = 'Prowl API-Key';
    
    require_once('ProwlPHP.php');
    require_once('twitter.class.php');
    
    $twitter = new Twitter($tuser, $tpass);
    
    $withFriends = True;
    $channel = $twitter->load($withFriends);
    $status = $channel->status[0];
    if (!file_exists('last.tmp')) {
        $handle = fopen('last.tmp', 'w');
        fclose($handle);
    }
    $handle = fopen('last.tmp', 'r');
    $last = fgets($handle, 140);
    fclose($handle);
    if (md5($status->text) != $last) {
        $prowl = new Prowl($apikey);
        $prowl->push(array(
                'application'=>'Twitter',
                'event'=>$status->user->name,
                'description'=>$status->text,
                'priority'=>0
            ));
    }
    $handle = fopen('last.tmp', 'w');
    fputs($handle, md5($status->text));
    fclose($handle);
    
    ?>
    
  6. Bananenbieger

    Bananenbieger Echter Boikenapfel

    Dabei seit:
    14.08.05
    Beiträge:
    23.809
    Zustimmungen:
    1.265
    Mittlerweile gibt es Notifications im AppStore. Als Basis für webbasierte Pushdienste ist das deutlich geeigneter als Prowl: Kann mehr und sieht besser aus.

    Edit: Notifications bietet übrigens direkt eine rudimentäre Twitter-Integration. Praktisch ist auch, dass man diverse Twitter-Apps direkt aus dem Push-Popup starten lassen kann.
    Zuletzt bearbeitet: 11.10.09

Diese Seite empfehlen