Vuoi inviare le mail tramite l’smtp di google?
Vediamo insieme come configurare la classe PHPMailer.
Sui server condivisi potremmo riscontrare dei problemi utilizzando la funzione mail() per inviare la posta tramite PHP. Questo questo perché il server mette in coda le mail per poi inviarle e, in caso di un numero elevato di invii, avere impostato un numero massimo di invii giornalieri. Questo potrebbe creare un disagio perché le email potrebbero arrivare anche con un ritardo di ore.
Immaginiamo di vendere servizi online e il cliente si è dimenticato la password, ne richiede una nuova ma la mail arriva solo dopo 2 ore! Come farà il cliente se aveva un urgente bisogno di accedere a quel servizio?
E questo è solo un esempio banale quando vendiamo servizi/prodotti on line. Immagina ora la tua situazione…
Qui possiamo sfruttare il potente Google che, con i suoi server, può esserci molto utile. Le uniche cose di cui abbiamo bisogno sono:
Implementiamo ora il codice per poter sfruttare il server smtp di google
function inviamail($to, $subject, $body) {require_once('class.phpmailer.php');//includiamo la classe $from = "maildelmittente@dominio.it"; $from_name = "Nome del mittente"; $mail = new PHPMailer(); // creiamo l'oggetto $mail->IsSMTP(); // abilitiamo l'SMTP $mail->SMTPDebug = 0; // debug: 1 = solo messaggi, 2 = errori e messaggi $mail->SMTPAuth = true; // abilitiamo l'autenticazione $mail->SMTPSecure = 'ssl'; // abilitiamo il protocollo ssl richiesto per Gmail $mail->Host = 'smtp.gmail.com'; // ecco il server smtp di google $mail->Port = 465; // la porta che dobbiamo utilizzare $mail->Username = 'email@gmail.com'; //email del nostro account gmail $mail->Password = 'password_gmail'; //password del nostro account gmail $mail->SetFrom($from, $from_name); $mail->Subject = $subject; $mail->Body = $body; $mail->IsHTML(true); $mail->AddAddress($to); if(!$mail->Send()) { $error = 'errore mail: '.$mail->ErrorInfo; return false; } else { $error = 'Messaggio inviato!'; return true; } } inviamail("maildestinatario@dominio.it", "Oggetto del messaggio", "Testo del messaggio");//richiamiamo la funzione
E questo è tutto. Ora puoi inviare le mail tramite SMTP google senza avere più problemi di invio.
Alla prossima.
Ciao Stefano,
Effettivamente per l’html ci era sfuggita l’impostazione $mail->isHtml(true) ma per quanto riguarda la porta, è possibile utilizzare la porta 587 con TLS, come detto da te, o tramite 465 con SSL. Questo dipende se il provider chiude qualche porta sul server allora possiamo utilizzare o una o l’altra. Puoi vedere anche dal supporto google direttamente https://support.google.com/mail/answer/78775?hl=it (addirittura potresti connetterti su porta 25 con supporto SSL).
Grazie mille per il commento. Abbiamo aggiornato il codice con il supporto per l’html
Ho visto il tuo articolo, lo trovo utile, ma solo per capire alcune funzioni in più della classe phpmailer.
La funzione che hai scritto, non va assolutamente in alcun modo. Ci sono alcuni errori di configurazione:
La porta del server di google è 587 e non 465
Il protocollo di sicurezza non è SSL ma è TSL
Poi utilizzando il $mail->Body(); se non instanzi l’oggetto IsHTML = (true); la mail non parte. Oppure, se non vuoi utilizzare l’oggetto IsHTML, puoi dichiarare direttamente MsgHTML( ‘contenuto del messaggio’ );
Spero di dare una mano a qualcuno 😉
volevo segnalarvi 5 feature già ben note e 5 nuove ampliamenti in fase sperimentale. Il team di gmail infatti è sempre attivo: io ad esempio ho scoperto da poco che se si mette la parola ‘allegato’ nel testo ma di fatto non si allega nulla (magari perché si dimentica di farlo) gmail avverte che non è stato inserito nessun file prima di procedere con l’invio.
http://it.emcelettronica.com/account-gmail-5-funzioni-del-presente-e-5-del-futuro-avere-molto-pi%C3%B9-di-casella-email