- Registriert
- 14.08.05
- Beiträge
- 25.515
Kinder, gebt fei Acht, Bananenbieger hat Euch etwas mitgebracht!
Heute: Wie basteln wir uns ein Mail2APNS-Gateway.
Benötigt werden: BeeJiveIM, 2 Jabber-Accounts (einen sendenden, und einen empfangenden für das iPhone) , XMPPHP, PEAR Mail_Mime und natürlich ein Server, welcher a) PHP-CLI hat und b) Mails an ein Script weitergeben kann (ergo auch einen Mailserver).
Einfach folgende beiden Scripts auf den Server in ein leeres Verzeichnis packen (z.B. /srv/mail2apns) und XMPPHP und Mail_Mime in die Unterverzeichnisse XMPPHP und Mail kopieren (z.B. /srv/mail2apns/XMPPHP und /srv/mail2apns/Mail).
Das sollte dann so aussehen:
Danach die Konfigurationsvariablen in mail2apns.php setzen. Beispielhaft habe ich mal ein paar Daten eingetragen.
mail2apns.php (an dieses Script die Mails pipen):
sendmessage_apns:
Wenn alles richtig gemacht wurde, bekommt Ihr nun über eintreffende Mails eine APN.
Mit einer leichten Änderung kann dieses Script auch für andere Dinge verwendet werden![Wink ;) ;)](/community/styles/apfeltalk/smilies/Wink.png)
Und so sieht es aus, wenn es fertig ist:
Heute: Wie basteln wir uns ein Mail2APNS-Gateway.
Benötigt werden: BeeJiveIM, 2 Jabber-Accounts (einen sendenden, und einen empfangenden für das iPhone) , XMPPHP, PEAR Mail_Mime und natürlich ein Server, welcher a) PHP-CLI hat und b) Mails an ein Script weitergeben kann (ergo auch einen Mailserver).
Einfach folgende beiden Scripts auf den Server in ein leeres Verzeichnis packen (z.B. /srv/mail2apns) und XMPPHP und Mail_Mime in die Unterverzeichnisse XMPPHP und Mail kopieren (z.B. /srv/mail2apns/XMPPHP und /srv/mail2apns/Mail).
Das sollte dann so aussehen:
![M2A-20090624-082913.png](http://biegr.bi.funpic.de/apfeltalk/M2A-20090624-082913.png)
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 - Version 0.8
// Copyright (C) 2009 Bananenbieger. No Rights Reserved.
//
// MAIL2APNS.PHP - Process incoming mail
//
//
// Configuration
//
// Jabber-Server to use for sending
//$jabber_srv="talk.google.com";
$jabber_srv="jabber.org";
// Port to use for Jabber Server
$jabber_srv_port=5222;
// Login data for sending user
$jabber_from_id="testi.testmann"; // It's "[email protected]" for Google.
$jabber_id_domain="jabber.org"; // It's "gmail.com" for Google.
$jabber_from_passwd="topsecret";
// Where to send message to? (Must be different from sending user)
$jabber_to_id="[email protected]";
//
// 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'];
*/
$from_raw=$structure->headers['from'];
$from=trim(substr($from_raw,0,strpos($from_raw,"<")-1));
$message='Neue eMail von '.$from.' eingetroffen! Betreff: '.$structure->headers['subject'].'';
$to=$structure->headers['to'];
//echo "\nMessage check:".$message."\n";
include("sendmessage_apns.php");
?>
sendmessage_apns:
Code:
<?php
// activate full error reporting
//error_reporting(E_ALL & E_STRICT);
include 'XMPPHP/XMPP.php';
#Use XMPPHP_Log::LEVEL_VERBOSE to get more logging for error reports
#If this doesn't work, are you running 64-bit PHP with < 5.2.6?
$conn = new XMPPHP_XMPP($jabber_srv, $jabber_srv_port, $jabber_from_id, $jabber_from_passwd, 'xmpphp', $jabber_id_domain, $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO);
try {
$conn->connect();
$conn->processUntil('session_start');
$conn->presence();
$conn->message($jabber_to_id, $message);
$conn->disconnect();
} catch(XMPPHP_Exception $e) {
die($e->getMessage());
}
?>
Wenn alles richtig gemacht wurde, bekommt Ihr nun über eintreffende Mails eine APN.
Mit einer leichten Änderung kann dieses Script auch für andere Dinge verwendet werden
![Wink ;) ;)](/community/styles/apfeltalk/smilies/Wink.png)
Und so sieht es aus, wenn es fertig ist:
![IMG_0040-20090624-012245.png](http://biegr.bi.funpic.de/apfeltalk/IMG_0040-20090624-012245.png)
Zuletzt bearbeitet: