- 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
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:
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
Und so sieht es aus, wenn es fertig ist:
Zuletzt bearbeitet: