如何让网站联系表单适配PHPMailer实现邮件发送功能?
Guida per integrare il form di contatto con PHPMailer
1. Preparare i file PHPMailer
- Scarica l'ultima versione di PHPMailer, estrai il pacchetto e copia la cartella
phpmailernella root del tuo sito web (in modo che i percorsiphpmailer/src/Exception.phpsiano corretti).
2. Modificare il form HTML
Aggiorna il tuo form con l'azione verso il file PHP di gestione e il metodo POST, aggiungendo anche un'area per visualizzare messaggi di stato:
<!-- HOMEPAGE --> <div class="subscription"> <h2 class="registrati"> CONTATTACI</h2> </div> <!-- container --> <div class="container-fluid"> <form class="row g-3 justify-content-center" style="margin:0 auto; width:80%;" id="form" action="send_email.php" method="POST"> <div class="col-md-6"> <label for="inputNome" class="form-label" id="labels">Nome</label> <input type="text" name="nome" class="form-control" id="inputNome" required> </div> <div class="col-md-6"> <label for="inputCognome" class="form-label" id="labels">Cognome</label> <input type="text" name="cognome" class="form-control" id="inputCognome"> </div> <div class="col-md-6"> <label for="inputEmail" class="form-label" id="labels">Indirizzo Email</label> <input type="email" name="email" class="form-control" id="inputEmail" required> </div> <div class="col-md-6"> <label for="inputTelefono" class="form-label" id="labels">Telefono</label> <input type="text" name="telefono" class="form-control" id="inputTelefono"> </div> <div class="col-12"> <label for="inputAzienda" class="form-label" id="labels">Azienda</label> <input type="text" name="azienda" class="form-control" id="inputAzienda" placeholder="Atomic srl" required> </div> <div class="mb-3"> <label for="exampleFormControlTextarea1" class="form-label" id="labels">Messaggio</label> <textarea class="form-control" name="messaggio" id="exampleFormControlTextarea1" rows="3"></textarea> </div> <div class="col-12 buttonarea"> <button type="submit" class="btn btn-outline-dark" name="invia" id="invia">Invia</button> </div> <!-- Area per messaggi di stato --> <div id="message" class="col-12 mt-3"></div> </form> </div>
3. Creare il file PHP di gestione (send_email.php)
Crea un file chiamato send_email.php nella root del sito, con il codice seguente. Modifica le impostazioni SMTP e l'indirizzo destinatario secondo le tue necessità:
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; require 'phpmailer/src/Exception.php'; require 'phpmailer/src/PHPMailer.php'; require 'phpmailer/src/SMTP.php'; // Verifica che il form sia stato inviato if (isset($_POST['invia'])) { // Pulisci e recupera i dati del form $nome = htmlspecialchars(trim($_POST['nome'])); $cognome = htmlspecialchars(trim($_POST['cognome'])); $email = htmlspecialchars(trim($_POST['email'])); $telefono = htmlspecialchars(trim($_POST['telefono'])); $azienda = htmlspecialchars(trim($_POST['azienda'])); $messaggio = nl2br(htmlspecialchars(trim($_POST['messaggio']))); $mail = new PHPMailer(true); try { // Impostazioni server $mail->SMTPDebug = SMTP::DEBUG_OFF; // Disabilita debug in produzione $mail->isSMTP(); // Opzione 1: SMTP di Gmail (richiede password app se 2FA è abilitato) $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'tuo-account@gmail.com'; // Il tuo account Gmail $mail->Password = 'la-tua-password-app'; // Password app (non la password normale) $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587; // Opzione 2: SMTP di Aruba (consigliato per host Aruba) // $mail->Host = 'smtp.aruba.it'; // $mail->SMTPAuth = true; // $mail->Username = 'tuo-account@aruba.it'; // Il tuo account email Aruba // $mail->Password = 'la-tua-password-aruba'; // $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // $mail->Port = 587; // Destinatari $mail->setFrom($email, "{$nome} {$cognome}"); // Mittente è l'utente del form $mail->addAddress('indirizzo-destinatario@tuo-dominio.it', 'Nome Azienda'); // Il tuo indirizzo email $mail->addReplyTo($email, "{$nome} {$cognome}"); // Rispondi all'utente del form // Contenuto email $mail->isHTML(true); $mail->Subject = "Nuovo messaggio da {$azienda}"; $mail->Body = " <h3>Nuovo messaggio di contatto</h3> <p><strong>Nome:</strong> {$nome}</p> <p><strong>Cognome:</strong> {$cognome}</p> <p><strong>Email:</strong> {$email}</p> <p><strong>Telefono:</strong> {$telefono}</p> <p><strong>Azienda:</strong> {$azienda}</p> <p><strong>Messaggio:</strong><br>{$messaggio}</p> "; $mail->AltBody = " Nuovo messaggio di contatto: Nome: {$nome} Cognome: {$cognome} Email: {$email} Telefono: {$telefono} Azienda: {$azienda} Messaggio: {$messaggio} "; $mail->send(); // Messaggio di successo echo '<div class="alert alert-success">Il messaggio è stato inviato con successo!</div>'; } catch (Exception $e) { // Messaggio di errore echo "<div class='alert alert-danger'>Il messaggio non è stato inviato. Errore: {$mail->ErrorInfo}</div>"; } } else { // Se si accede direttamente al file senza inviare il form echo '<div class="alert alert-warning">Accesso non autorizzato.</div>'; } ?>
4. Note importanti
- Gmail: Se usi Gmail, abilita l'accesso alle password app (se hai 2FA abilitato) o disabilita temporaneamente l'opzione "Accesso app meno sicure" (non consigliato per produzione).
- Aruba: È consigliato usare l'SMTP di Aruba per evitare problemi di spam o blocchi da parte dei server.
- Sicurezza: Mantieni le password delle email in un luogo sicuro; in produzione, usa variabili di ambiente invece di hardcodarle nel codice.
- Debug: Abilita
SMTP::DEBUG_SERVERdurante i test per vedere i dettagli dell'invio, quindi disabilitalo in produzione per motivi di sicurezza.
内容的提问来源于stack exchange,提问作者Silvia
相关产品推荐
相关产品推荐

