Chi sviluppa siti web si trova a volte a risolvere il problema dell’invio delle mail in PHP da un server web. Questo accade per inviare una mail di conferma di registrazione, di conferma ordine per un e-commerce ecc.

Per realizzare questa funzione in linguaggio PHP abbiamo a disposizione sul web un’ottima libreria chiamata PHPMailer che può essere usata anche con vari framework PHP come Laravel. In questo articolo vediamo però come personalizzarla per inviare una e-mail con il nostro server SMTP custom. Vediamo come si fa.

Innanzitutto importiamo nel codice della nostra pagina la libreria PHPMailer scaricandola da qui:


include("class.phpmailer.php");

Ora impostiamo il codice PHP per inviare la mail tramite il nostro server SMTP di Google (in questo caso, ma voi metterete i parametri del vostro server SMTP) in questo modo:


function inviomail($email, $oggetto, $messaggio, $path_allegato){
    if(validate_email($email)){ // validate_email è una funzione che controlla la correttezza della mail
        //invia la mail
        $mail = new PHPMailer();
        $mail->IsSMTP(); // Utilizzo della classe SMTP al posto del comando php mail()
        $mail->SMTPAuth = true; // Autenticazione SMTP
        $mail->Host = "smtp.gmail.com";
        $mail->Port = 465;
        $mail->SMTPSecure = 'ssl'; 
        $mail->Username = "servercustom.noreply@gmail.com"; // Nome utente SMTP autenticato
        $mail->Password = "password"; // Password account email con SMTP autenticato
        $mail->Priority    = 1; // Highest priority - Email priority (1 = High, 3 = Normal, 5 = low)
        $mail->From     = "servercustom.noreply@gmail.com";
        $mail->FromName = "E-mail di prova - server custom";
        $mail->AddAddress($email);
        $mail->IsHTML(true); 
        $mail->Subject  =  $oggetto;
        $mail->Body     =  $messaggio;
        $mail->AltBody  =  "";
        $mail->AddAttachment($path_allegato);  
        if(!$mail->Send()){
                echo "errore nell'invio della mail: ".$mail->ErrorInfo;
                return false;
        }else{
                return true;
        }
    }else{
        echo "La mail non è stata inviata a causa dell'indirizzo errato o un problema di connessione!";
    }
}

Con questo semplice codice riusciremo a inviare l’email in modo semplice e veloce all’indirizzo destinatario.