- Mon
- 19
- Jan
- 09
Inviare email PHP in modo semplice e veloce usando la classe PhpMailer
Di in Php Controls: +-close
In formato testo semplice o HTML, con o senza allegati
PHPMailer è un’utilissima classe che rende l’invio di email con PHP davvero semplice. Potete scaricare gratuitamente questa classe dal sito http://phpmailer.codeworxtech.com/ o scaricarla direttamente da sourceforge.
Per poter utilizzare PHPMailer dovrete scompattare il contenuto dell’archivio scaricato ed inserire la directory ‘phpmailer’ ( restituita dopo la scompattazione ) all’interno del vostro progetto. Quindi, per utilizzarla nel vostro script, dovrete istanziare PHPMailer in questo modo:
<?php
require("class.phpmailer.php");
$mail = new PHPMailer();
?>
Provate a richiamare il vostro script contenente queste sole righe di codice, se non ottenete nessun errore la classe è stata correttamente installata ed istanziata e il nuovo oggetto $mail è pronto per essere utilizzato.
Tramite PHPMailer possiamo inviare email usando Sendmail ( solo su ambienti unix, corrisponde all’uso della funzione buil in mail() ), SMTP E qmail. Nel seguente esempio vedremo come inviare utilizzando SMTP, quello di cui avremo bisogno quindi sarà un account email valido. Se possedete un dominio di primo livello con la possibilità di creare account email vi consiglio di farlo, in caso contrario ( per esempio nel caso voleste inviare email lavorando in locale ) potreste utilizzare un account email free.
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // diciamo alla classe di usare SMTP
$mail->Host = "smtp.example.com"; // SMTP server, questo valore è da modificare!
$mail->From = "from@example.com"; // L'account email che state utilizzando
$mail->AddAddress("myfriend@example.net"); // L'indirizzo email di destinazione
$mail->Subject = "First PHPMailer Message"; // L'oggetto della email
$mail->Body = "Hi! \n\n This is my first e-mail sent through PHPMailer."; // Il corpo del messaggio
$mail->WordWrap = 50;
if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent.';
}
Inviare email con allegati
Basicamente esistono due possibilità per inviare un allegato
- Specificando un file da un percorso fisico
- Inserendo l’allegato in formato binario in una variabile
L’invio di un allegato, grazie a PHPMailer, si riduce all’inserimento si una semplice linea di codice:
$mail->AddAttachment($path,$name,$encoding,$type);
Questa dovrà essere inserita dopo aver instanziato la classe ed ovviamente prima di aver inviato la mail tramite il metodo send().
AddAttachment ha un unico parametro obbligatorio, $path, parametro che dovrà equivalere al percorso fisico del file da inviare come allegato.
Gli altri parametri non sono obbligatori, ma vediamo nel dettaglio a che cose servono.
- $name: è il nome che vogliamo attribuire all’allegato. L’utente destinatario visualizzerà questo nome come nome dell’allegato in alternativa al nome d’origine.
- $encoding: questo parametro è decisamente più tecnico, di default è base64, ma può assumere i valori di 7bit, 8bit, binary & quoted-printable. Se specificheremo un valore che il mailserver non può gestire, questo convertirà l’encoding passato a parametro con un encoding gestibile.
- $type: questo parametro corrisponde al MIME type per il file allegato, ovvero determina il tipo del file ( se è una immagine JPG, GIF o se è un file audio MP3, WAV o quant’altro ). Il valore di default, valido per qualsiasi genere di file è application/octet-stream.
Inviare email in formato HTML
PHPMailer ci da la possibilità di inviare email usando il formato HTML in maniera estremamente semplice. Basterà inserire, anche in questo caso, una semplice linea di codice, prima della chiamata a send():
$mail->IsHTML(true);
Il codice HTML della email dovrà essere specificato per il body:
$mail->Body = "Hello, my friend! \n\n This message uses HTML entities!";
PHPMailer ci offre alcune altre possibilità avanzate per la gestione degli allegati ( per esempio inline attachment ), potete leggere di più a riguardo nella documentazione ufficiale.
Estendere PHPMailer
Nel caso aveste bisogno di inviare email in più parti della vostra applicazione, senza dover specificare ogni volta i parametri di connessione all’account SMTP, la soluzione è estendere la classe.
require("class.phpmailer.php");
class MyMailer extends PHPMailer {
// Set default variables for all new objects
var $From = "from@email.com";
var $FromName = "Mailer";
var $Host = "smtp1.site.com;smtp2.site.com";
var $Mailer = "smtp"; // Alternative to IsSMTP()
var $WordWrap = 75;
}
Fatto ciò, bisognerà fare attenzione ad utilizzare istanze della nuova classe creata e non direttamente di PHPMailer, come nel seguente esempio
$mail = new MyMailer();
$mail, istanza di MyMailer, conterrà al suo interno già tutte le variabili di configurazione, quindi non ci resterà che inserire destinatari, eventualmente degli allegati ed inviare.
Per saperne di più potete consultare questo link al sito del produttore.
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.












peccato però che se uno addembeddedimage funziona.
se uso addattachment funziona.
ma se uso tutti e due invia solo l’immagine.
Ciao,
grazie per la segnalazione.
Spero che anche gli sviluppatori lo sappiano..