Invio di email dal sito web (Form Mail) e SMTP Auth

MondoServer
04-12-2018 10:35

Per l'invio di email dal sito web è consigliato l'utilizzo di SMTP autenticato (SMTP Auth), collegandosi al server di posta del dominio, i cui dati di connessione sono comunicati con la mail di attivazione del servizio hosting.

#UTILIZZANDO UN CMS (i.e. WordPress)

I più diffusi CMS, ad esempio WordPress, nella sezione delle impostazioni o configurazioni permettono di specificare il metodo di invio SMTP Auth e di configurarlo in modo semplice e intuitivo. 

Si dovrà disporre dei parametri di configurazione della posta elettronica, comunicati con la mail di attivazione del servizio hosting. In particolare i seguenti:

Server SMTP: ad esempio mail.dominio.xyz (fare rif. alla mail di attivazione Hosting)

Login: indirizzo email per esteso, utilizzato come mittente dei messaggi

Password: la password della mail utilizzata come Login

Porta server: 587

 

#PHP

In PHP sono disponibili numerose classi per l'invio con autenticazione SMTP. Segnaliamo la libreria PHPMailer che include una collezione di funzioni per comporre e inviare email tramite applicazione web in PHP. PHPMailer supporta tutti i principali metodi di invio di email e, in particolare, fornisce il supporto a SMTP Auth (SMTP con autenticazione).

La funzione mail() di PHP ha numerosi "problemi nascosti" pertanto consigliamo vivamente di non utilizzarla per la realizzazione si form mail, o in generale per l'invio di email dal sito web, preferendo PHPMailer come strumento per la validazione e l'invio dei messaggi.

Il primo passo da compiere è il download della libreria dal sito del progetto PHPMailer, quindi la copia della stessa in una cartella del sito web. Successivamente si potrà includere la libreria nel progetto, ad esempio nel metodo seguente:

<?php
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
...

Nel codice sarà pertanto possibile definire tutti gli altri parametri per l'invio, facendo riferimento alla documentazione di PHPMailer.

Segue un esempio di codice per l'invio tramite PHPMailer:

<?php
require 'class.phpmailer.php'; //Accertarsi che il file sia presente nella cartella

$mail = new PHPMailer;

$mail->IsSMTP();                              
$mail->Host = 'xxxxx';         // Server della posta in uscita del dominio
$mail->Port = 587;                            
$mail->SMTPAuth = true;                       
$mail->Username = 'xxxxx';        // Indirizzo email mittente
$mail->Password = 'xxxxx';          // Password della casella email mittente
$mail->SMTPSecure = 'tls';                    
$mail->From = 'indirizzo email mittente';
$mail->FromName = 'il tuo nome';
$mail->AddAddress('indirizzo email destinatario n. 1', 'Nome del destinatario');
$mail->AddAddress('indirizzo email destinatario n. 2');
$mail->IsHTML(true);                                  // "false" per email in sono formato TXT
$mail->Subject = 'Oggetto della mail';
$mail->Body    = 'testo del <strong>messaggio in HTML</strong>';
$mail->AltBody = 'testo del messaggio in formato TXT';

if(!$mail->Send()) {
   echo 'Errore:';
   echo 'Mailer Error: ' . $mail->ErrorInfo;
   exit;
}

echo 'Messaggio inviato';
?>

#JAVAMAIL

 JavaMail API dispone del pacchetto com.sun.mail.smtp che opera come "protocol provider" per l'accesso a server SMTP e per la gestione delle eccezioni.

L'autenticazione SMTP è opzionale ma è vivamente consigliata. A tale scopo è necessario impostare correttamente la proprietà "mail.smtp.auth" e definire le altre proprietà relative ai parametri di autenticazione (user, password, host, port, etc).

In proposito segnaliamo il seguente esempio, basato sull'Authenticator incluso nel pacchetto javax.mail che differisce dall'omonimo distribuito da java.net.

import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

import java.util.Properties;


public class SimpleMail {

    private static final String SMTP_HOST_NAME = "xxxxxxxx";
    private static final String SMTP_AUTH_USER = "xxxx@xxxx";
    private static final String SMTP_AUTH_PWD  = "xxxxxxxx";

    public static void main(String[] args) throws Exception{
       new SimpleMail().test();
    }

    public void test() throws Exception{
        Properties props = new Properties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.host", SMTP_HOST_NAME);
        props.put("mail.smtp.auth", "true");

        Authenticator auth = new SMTPAuthenticator();
        Session mailSession = Session.getDefaultInstance(props, auth);
        Transport transport = mailSession.getTransport();

        MimeMessage message = new MimeMessage(mailSession);
        message.setContent("This is a test", "text/plain");
        message.setFrom(new InternetAddress("xxxxxx@xxxxx"));
        message.addRecipient(Message.RecipientType.TO,
             new InternetAddress("xxxxxxxx@xxxxxxxxxx"));

        transport.connect();
        transport.sendMessage(message,
            message.getRecipients(Message.RecipientType.TO));
        transport.close();
    }

    private class SMTPAuthenticator extends javax.mail.Authenticator {
        public PasswordAuthentication getPasswordAuthentication() {
           String username = SMTP_AUTH_USER;
           String password = SMTP_AUTH_PWD;
           return new PasswordAuthentication(username, password);
        }
    }
}

 

Tags: form mail, form mail, smtp auth
Valutazione media: 5 (1 Voto)

Non puoi commentare questa FAQ