Nie jest to jakiś super profesionalny kod, ale działa.
<? class Baza { public $polacz; public $host = "localhost"; public $baza = "powiadamiania"; public $user = "xxxx"; public $password = "xxxxx"; public $table; public function __construct() { $this->polacz = mysqli_connect($this->host, $this->user, $this->password, $this->baza) OR trigger_error('Nie można połaczyć z bazą danych'); $this->polacz -> query("SET NAMES 'latin2'"); } public function query($q) { return mysqli_query($this->polacz, $q); } public function check($data) { $q="SELECT * FROM `emails` WHERE `data`='$data'"; $r = $this->query($q); $this->table = mysqli_fetch_array($r); } public function insert($data, $subject) { $q="INSERT INTO `emails` (`id`, `data`, `temat`) VALUES ('' , '$data', '$subject')"; $r = $this->query($q); } } class Imap { public $mailbox; public $username; public $password; public $type; public $header; public $subject; public $data; public $imap; public function GetEmails() { $this->imap = imap_open($this->mailbox, $this->username, $this->password); return $emails = imap_search($this->imap, $this->type); } public function GetHeader($email) { $this->header = imap_headerinfo($this->imap, $email); $this->subject = imap_utf8($this->header->subject); $this->data = $this->header->date; } } class SendSms { public $url; public $data; public $r; public function curl() { $curl = curl_init($this->url); curl_setopt($curl, CURLOPT_FAILONERROR, 1); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 50); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $this->data); $this->r = curl_exec($curl); curl_errno($curl); curl_error($curl); curl_close($curl); return true; } } public function ShowRezults() { } } class SendTitleSms { public $imap; public $baza; public $sms; public function __construct() { $this->imap = new Imap; $this->baza = new Baza; $this->sms = new SendSms; } public function SetData($mailbox, $username, $pass, $type, $tprefix, $number) { $this->imap->mailbox = $mailbox; $this->imap->username = $username; $this->imap->password = $pass; $this->imap->type = $type; $this->sms->url = 'ht://www.text.plusgsm.pl/sms/sendsms.php'; $this->sms->data = 'tprefix='.$tprefix.'&numer='.$number.'&odkogo=mail&tekst='; } public function send() { $emails = $this->imap->GetEmails(); foreach ($emails as $email) { $this->imap->GetHeader($email); $this->baza->check($this->imap->data); if($this->baza->table['data'] == $this->imap->data) { } else { $this->sms->data .= $this->imap->subject; if($this->sms->curl()) { $this->baza->insert($this->imap->data, $this->imap->subject); } } } } } } ?>
Wymagana jest jeszcze baza danych
Kod
CREATE TABLE `emails` (
`id` int(11) NOT NULL auto_increment,
`data` varchar(40) NOT NULL,
`temat` varchar(50) character set utf8 collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=109;
`id` int(11) NOT NULL auto_increment,
`data` varchar(40) NOT NULL,
`temat` varchar(50) character set utf8 collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=109;
A tu jej uzycie
<?php $send = new SendTitleSms; $send->SetData("{imap.gmail.co:993/imap/ssl}INBOX", 'email', 'haslo', "UNSEEN", 'prefix', 'numertelefonu'); $send->send(); ?>
Klasa ta działa tylko na telefon w plusie i ma dzienny limit bramki chyba 10 sms, ale mi to wystarcza.
Proszę o ocenę.