Come inviare email con PHP

Come inviare email con PHP

Funzione mail di PHP:

mail($destinatario, $oggetto, $messaggio)

Quella sopra riportata è la sintassi base. Ad essa può essere aggiunto un quarto elemento per definire gli headers del messaggio email che vogliamo inviare. Quindi la sintassi diventa come la seguente :

mail($destinatario, $oggetto, $messaggio, $headers)

L’ aggiunta degli header permette di abbassare la probabilità che un eventuale server di posta ricevendo le email dal nostro script possano catalogarle come spam perché trovano come mittente il nome del server e non indirizzo email email legato all’ ipotetico servizio.

Vediamo di seguito un esempio di codice utilizzabile:

<?php
// definisco mittente e destinatario della mail
$nome_mittente = "Mio Nome";
$mail_mittente = "mittente@sito.com";
$mail_destinatario = "destinatario@sito.com";
 
// definisco il subject ed il body della mail
$mail_oggetto = "Messaggio di prova";
$mail_corpo = "Questo è un messaggio di prova per testare la mia applicazione";
 
// aggiusto delle intestazioni della mail
// In questa sezione che deve essere definito il mittente (From)
// ed altri eventuali valori come Cc, Bcc, ReplyTo e X-Mailer
$mail_headers = "From: " .  $nome_mittente . " <" . $mail_mittente . ">\r\n";
$mail_headers .= "Reply-To: " .  $mail_mittente . "\r\n";
$mail_headers .= "X-Mailer: PHP/" . phpversion();
 
if (mail($mail_destinatario, $mail_oggetto, $mail_corpo, $mail_headers))
  echo "Messaggio inviato con successo a " . $mail_destinatario;
else
  echo "Errore. Nessun messaggio inviato.";
?>

Fonte: mrebmaster.it

La funzione mail di PHP non supporta nativamente l’ autenticazione SMTP. Sarà necessario nel caso volessimo usare l’ autenticazione SMTP avere a disposizione il pacchetto PEAR Mail installato. Forniremo così allo script le credenziali di una casella email per potersi autenticare.
Di seguito un esempio di codice con autentica SMTP:

 <?php
 require_once "Mail.php";
 
 $mittente = "Mario Rossi  <mario.rossi@rossi.it>";
 $destinatario = "Tizio Caio <mario.rossi@rossi.it>";
 $oggetto = "Salve";
 $messaggio = "Salvei,\n\Tutto bene?";
 
 $host = "smtp.tuo_server.ext";
 $username = "smtp_username";
 $password = "smtp_password";
 
 $headers = array ('From' => $mittente,
   'To' => $destinatario,
   'Subject' => $oggetto);
 $smtp = Mail::factory('smtp',
   array ('host' => $host,
     'auth' => true,
     'username' => $username,
     'password' => $password));
 
 $mail = $smtp->send($destinatario, $headers, $messaggio);
 
 if (PEAR::isError($mail)) {
   echo("

" . $mail->getMessage() . "

");
  } else {
   echo("

Messaggio Inviato con successo

");
  }
?>

Fonte di riferimento => https://www.lifewire.com/send-email-from-php-script-using-smtp-authentication-and-ssl-1171197

Ricordiamo che quando si parla di funzioni PHP è sempre doveroso consultare il sito di riferimento del consorzio produttore di questo potentissimo linguaggio di programmazione http://www.php.net nello specifico cercando per la funzione mail di PHP otteremo questo link http://php.net/manual/en/function.mail.php dove sono presenti numerosi altri esempi.

Classe PHPMailer:

Così come la semplice funzione mail() di PHP, la classe PHPmailer ci permette di inviare email siano esse in formato testo, come visto per la funzione mail siano esse in formato HTML. Il primo step è sicuramente quello di scaricare questo script dopo averlo cercato in rete. Una volta scaricata la cartella dentro il nostro spazio di hosting potremo poi procedere a richiamarlo all’ interno del nostro codice con la funzione “require”.

require "phpmailer/class.phpmailer.php";

Di seguito il codice per l’ invio di una email di testo :

<?php

// includiamo la classe PHPMailer
require "phpmailer/class.phpmailer.php";

// istanziamo la classe
$messaggio = new PHPmailer();
$messaggio->IsSMTP();

$messaggio->Host='Host SMTP';
 
//definiamo le intestazioni e il corpo del messaggio
$messaggio->From='info@mittente.it';
$messaggio->AddAddress('info@destinatario.it');
$messaggio->AddReplyTo('info@mittente.it');
$messaggio->Subject='Prova.';
$messaggio->Body=stripslashes('Ciao!!!!');
 
//definiamo i comportamenti in caso di invio corretto
//o di errore
if(!$messaggio->Send()){
  echo $messaggio->ErrorInfo;
}else{
  echo 'Email inviata correttamente!';
}
 
//chiudiamo la connessione
$messaggio->SmtpClose();
unset($messaggio);
?>

Fonte di riferimento => http://www.mrwebmaster.it/php/inviare-email-classe-phpmailer_7047_2.html

Le voci sotto riportate fanno riferimento all’ invio tramite autenticazione SMTP, qualora non si intenda utilizzarla vanno commentate o rimosse.

$messaggio->IsSMTP();

$messaggio->Host='Host SMTP';

$messaggio->SmtpClose();

Qualora volessimo inviare in formato HTML andiamo ad inserire i TAG HTML sul testo che vogliamo formattare.

<?php
require "phpmailer/class.phpmailer.php";
$messaggio = new PHPmailer();
$messaggio->IsSMTP();
 
//settiamo su true il metodo che indica alla classe
//il formato HTML
$messaggio->IsHTML(true);
$messaggio->Host='Host SMTP';
 
//intestazioni e corpo dell'email
$messaggio->From='info@mittente.it';
$messaggio->AddAddress('info@destinatario.it');
$messaggio->AddReplyTo('info@mittente.it');
$messaggio->Subject='Prova formato HTML';
 
//inseriamo i tag HTML e i CSS per formattare il messaggio
$messaggio->Body = '';
$messaggio->Body .= '.up{background-color:#FF0000;color:#000000;font-size:12px}';
$messaggio->Body .= '.down{color:#FF0000;text-align:left;font-size:15px}';
$messaggio->Body .= '';
$messaggio->Body .= ''; 

$messaggio->Body .= '<table><tr><td class="up">Ciao!</td></tr><tr><td class="down">Ciao!</td></tr></table>';

$messaggio->Body .= '';
 
//parte relativa all'invio
if(!$messaggio->Send()){
  echo $messaggio->ErrorInfo;
}else{
  echo 'Email inviata correttamente!';
}
$messaggio->SmtpClose();
unset($messaggio);
?>

Fonte: mrwebmaster.it

Ovviamente le possibilità di personalizzazione ed utilizzo sono numerose e vanno eseguite le dovute personalizzazioni in base al proprio hosting e soprattutto alle proprie esigenze.