Následující skript se pak pravidelně připojuje pomocí IMAPu na poštovní server a kontroluje nové zprávy ve složce SMS. Pokud tam jsou nové zprávy, tak přes API odešle informaci o odesilateli a předmět zprávy. Poté email smaže ze složky SMS. (Skript je napsán v php a spuštěn na Linuxu.)
Kód: Vybrat vše
#! /usr/bin/php
<?
# Parametry pro pripojeni do konkretni schranky odkud se posilaji SMS
$imap_server = "10.124.66.66";
$imap_param = ":993/imap/ssl/novalidate-cert";
$imap_login = "tydyt";
$imap_heslo = "hesllomail";
$imap_slozka = "INBOX/SMS";
# spolecna nastaveni pro API SMS
$adresa_sms = "https://www.odorik.cz/api/v1/sms" ;
$authentication = array("user" => "777555", "password" => "hesloAPI");
$telefon_sms = "777555333"; # Mobilní číslo, kam se SMS zasilaji
# Funkce k odeslani sms text na tel
function sms($tel, $text, $odesilatel = "5517"){
global $authentication, $adresa_sms ;
$sms = array( "recipient" => $tel, "sender" => $odesilatel, "message" => $text);
$data = http_build_query($authentication + $sms);
$hlavicka = array ('http' => array ('method' => 'POST',
'header' => "Connection: close\r\n" .
"Content-Length: " . strlen($data) . "\r\n",
'content'=> $data )
);
$context = stream_context_create($hlavicka) ;
$odpoved = file_get_contents($adresa_sms, false, $context );
if (strstr($odpoved, "successfully_sent") == false) {
$status = $odpoved;
}
return $status;
}
# ------------------------------------------------------------------------------
# Pripoj se na IMAP server do nadefinovane schranky
$spojeni = IMAP_Open("{".$imap_server.$imap_param."}$imap_slozka", "$imap_login", "$imap_heslo");
if( !$spojeni ){
print Date("d.m.y H:i:s", Time())." ERROR - nepovedlo se pripojit k emailove schrance $imap_slozka \n";
}else{
$pocet = IMAP_Num_Msg($spojeni);
if( $pocet > 0 ){
print Date("d.m.y H:i:s", Time())." Pocet zprav v $imap_slozka je : $pocet \n" ;
for( $i = 1; $i <= $pocet; $i++ ){
$hlava = IMAP_Header($spojeni, $i,100, 500);
$sms = "Od: ".iconv_mime_decode($hlava->fetchfrom ,0 ,"UTF-8")."\n".iconv_mime_decode($hlava->fetchsubject ,0 ,"UTF-8");
$status = sms($telefon_sms, $sms) ; # Odesli vytvorenou sms
if( $status == "" ){ # Zkontroluj stav
IMAP_Delete($spojeni, $i); # Oznac ji ke smazani
$smaz_sms = 1 ; # Nastav priznak ze se bude mazat
print Date("d.m.y H:i:s", Time())." Odeslano ".$sms."\n" ;
}else{
print Date("d.m.y H:i:s", Time())." ERROR - $status \n" ;
}
}
if( $smaz_sms == 1 ){ # Pokud byly nejake zpravy oznacenz ke smazani,
IMAP_Expunge($spojeni) ; # tak je smazme
}
}
IMAP_Close($spojeni); # Uzavri IMAP spojeni
}
?>
Kód: Vybrat vše
*/2 * * * * root /adresa/ke/skriptu/sms-report.php >> /var/log/sms-report
Rekapitulace požadavku:
- Vlastnit emailový účet na serveru, který umí IMAP a je možné nastavit třídící parametry
- Mít možnost pravidelného spuštění PHP skriptu
POZOR: Tento skript je velmi jednoduchý a je otestován jen o jeden poštovní server. Použití je na vlastní nebezpečí a nenesu žádnou zodpovědnost za případné škody.