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.
