Codice PHP:
<?php
//Includo gli oggetti Mail.php e Mail/mime.php
//Attenzione che questi oggetti devono essere prima installati
//da pear, se non si possono installare, si possono sempre
//utilizzare richiamandoli dalla cartella dove sono stati messi
//ma funzionano in maniera un pò problematica così.
//Se non erro bisogna installare Net_SMTP (sempre di
//pear) altrimenti potrebbe non riuscire l'invio.
require_once("Mail.php");
require_once("Mail/mime.php");
//Carico i destinatari
$recipients[] = "indirizzo1@domain.it";
$recipients[] = "indirizzo2@domain.it";
$recipients[] = "indirizzo3@domain.it";
//Quì risiede il corpo del messaggio
$root="/var/www/mail/";
//Apro il messaggio e ne carico il contenuto dentro
//$contents, nb il messaggio è in HTML
$filename = $root."somarello_t.html";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
//Carico un altro ipotetico corpo del messaggio
//in solo testo
$filename = $root."somarello.txt";
$handle = fopen($filename, "r");
$contents2 = fread($handle, filesize($filename));
fclose($handle);
//Parametri di configurazione necessari (cambiare l'smtp
//se non si usa tin)
$params["host"] = "mail.tin.it";
$params["port"] = "25";
$params["auth"] = false;
$params["username"] = "";
$params["password"] = "";
//Apro questi due file, cache contiene l'ultimo mio indirizzo
//ip, flush viene aggiornato ogni 20 minuti con l'indirizzo
//attuale
$flu=fopen("/pers/ip-sender/flush","r");
$cac=fopen("/pers/ip-sender/cache","r");
$r_flu=fgets($flu);
$r_cac=fgets($cac);
//sostituisco all'interno dei due messaggi il tag @@ip@@
//con l'indirizzo ip
$contents=str_replace("@@ip@@",$r_flu,$contents);
$contents2=str_replace("@@ip@@",$r_flu,$contents2);
//Se cache e flush sono diversi allora il mio ip è mutato
//e procedo all'invio
if(strcmp(trim($r_flu),trim($r_cac))!=0){
fclose($cac);
$cac=fopen("/pers/ip-sender/cache","w");
//scrivo dentro a cache il nuovo indirizzo
fwrite($cac,$r_flu);
//Processo uno ad uno tutti i miei destinatari
foreach($recipients as $k => $v){
//Creo l'oggetto Mail, il tipo d'invio è
//smtp, la configurazione è in params
$mail_object =& Mail::factory("smtp", $params);
//Creo l'oggetto mail_mime, va creato passandogli
//i caratteri dell'accapo
$mail_mime=new Mail_mime("\r\n");
//Creo un array che sarà l'header del messaggio
$hdrs = array(
'From' => 'La posta del Somaro<indirizzo@somaro.it>',
'To' => $v,
'Subject' => 'Ip cambiato'
);
//Con il metodo setHTMLBody carico nell'oggetto
//il corpo HTML del messaggio, con setTXTBody il
//corpo solo testo, in questo modo se il destinatario
//non ha la possibilità di vedere messaggi in HTML
//vedrà il solo testo
$mail_mime->setHTMLBody($contents);
$mail_mime->setTXTBody($contents2);
//Grazie a mail_mime posso anche caricare allegati ed
//immagini che fanno parte del corpo del messaggio
//HTML, per le immagini del corpo uso addHTMLImage.
//Per essere visualizzate all'interno del messaggio
//l'src dell'immagine deve essere src="nomeimmagina.estensione"
$mail_mime->addHTMLImage($root."somarello-sx.jpg","image/jpeg","somarello-sx.jpg",true);
$mail_mime->addHTMLImage($root."somarello-up.jpg","image/jpeg","somarello-up.jpg",true);
$mail_mime->addHTMLImage($root."somarello-dw.jpg","image/jpeg","somarello-dw.jpg",true);
$mail_mime->addHTMLImage($root."somarello-dx.jpg","image/jpeg","somarello-dx.jpg",true);
//una volta caricati tutti i dati in mail_mime utilizzo
//il metodo get() che mi restituisce un body del messaggio
//formattato in maniera impeccabile pronto per essere spedito
//con mail, poi con headers() ottengo un header formattato
//anch'esso e pronto per mail
$body = $mail_mime->get();
$hdrs = $mail_mime->headers($hdrs);
//Ora spedisco il tutto con il metodo send di Mail
$mail_object->send($v,$hdrs,$body);
}
echo("Inviata e-mail.\n");
}
?>
Spero ti sia d'aiuto