You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让网站联系表单适配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 phpmailer nella root del tuo sito web (in modo che i percorsi phpmailer/src/Exception.php siano 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_SERVER durante i test per vedere i dettagli dell'invio, quindi disabilitalo in produzione per motivi di sicurezza.

内容的提问来源于stack exchange,提问作者Silvia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:57:07