L’invio di una e-mail dal mio modulo di contatto non funziona

Voglio aggiungere contatti al mio sito web ,così ho cercato su internet per un esempio
e ho trovato questo esempio :

http://www.html-form-guide.com/contact-form/php-email-contact-form.html

Ho seguito l’esempio, ma non ha funzionato, non c’è nessuna e-mail nella mia casella di posta, ma reindirizzare a me la pagina di ringraziamento dopo il submit.

Ho cambiato il contact-form-handler.php per

<?php 
$errors = '';
$myemail = '[email protected]';//<-----Put Your email address here.
if(empty($_POST['name'])  || 
   empty($_POST['email']) || 
   empty($_POST['message']))
{
    $errors .= "\n Error: all fields are required";
}

$name = $_POST['name']; 
$email_address = $_POST['email']; 
$message = $_POST['message']; 

if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
$email_address))
{
    $errors .= "\n Error: Invalid email address";
}

if( empty($errors))
{
    $to = $myemail; 
    $email_subject = "Contact form submission: $name";
    $email_body = "You have received a new message. ".
    " Here are the details:\n Name: $name \n Email: $email_address \n Message \n $message"; 

    $headers = "From: $myemail\n"; 
    $headers .= "Reply-To: $email_address";

    mail($to,$email_subject,$email_body,$headers);
    //redirect to the 'thank you' page
    header('Location: contact-form-thank-you.html');
} 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Contact form handler</title>
</head>

<body>
<?php
echo nl2br($errors);
?>

</body>
</html>

Mio contact.html file :

<form method="POST" name="contactform" action="contact-form-handler.php"> 
            <p>
                <label for='name'>Your Name:</label> <br>
                <input type="text" name="name">
            </p>
            <p>
                <label for='email'>Email Address:</label> <br>
                <input type="text" name="email"> <br>
            </p>
            <p>
                <label for='message'>Message:</label> <br>
                <textarea name="message"></textarea>
            </p>
                <input type="submit" value="Submit"><br>
                </form>
<script language="JavaScript">
//Code for validating the form
//Visit http://www.javascript-coder.com/html-form/javascript-form-validation.phtml
//for details
var frmvalidator  = new Validator("contactform");
frmvalidator.addValidation("name","req","Please provide your name"); 
frmvalidator.addValidation("email","req","Please provide your email"); 
frmvalidator.addValidation("email","email","Please enter a valid email address"); 
</script>

e onther pagina contact-form-tank-you.html

<div id="body">
        <div class="content">
            <h1>Thank you!</h1>
Thank you for submitting the form. We will contact you soon!


        </div>
</div>

Miei programmi utilizzati sono:htmp ,wampserver,php 5.3.10

Aggiornamento

Ho aperto il mio php.ini e questo quello che ho trovato:

    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = smtp.yahoo.fr
    ; http://php.net/smtp-port
    smtp_port = 25

    ; For Win32 only.
    ; http://php.net/sendmail-from
    sendmail_from = [email protected].fr

Ho effettuato l’accesso ai registri/appache_error ans ho trovato questo errore:

[Thu Dec 27 10:11:51 2012] [error] [client 127.0.0.1] PHP Warning:  mail() [<a href='function.mail'>function.mail</a>]: SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. dm3sm56414314wib.9 in C:\\wamp\\www\\MyWebsitname\\en\\contact-form-handler.php on line 32, referer: http://localhost/MyWebsitname/en/contact.html

Così ho cercato in internet e ho scoperto che mi deve aggiungere

ini_set("SMTP","ssl://smtp.gmail.com");
ini_set("smtp_port","465");

ma il problema è lo stesso?

  • Sì, si prega di aggiungere il codice in cui l’e-mail viene inviato e php la configurazione della posta elettronica.
  • è necessario configurare la posta sul server
  • Sembra che il tuo controllo per i valori mancanti è verificato un errore. Dump il contenuto di $_POST e vedere perché.
  • mail() funzione non supporta Gmail di autenticazione. Considerare l’utilizzo di SwiftMailer / PHPMailer.
InformationsquelleAutor Julie | 2012-12-24

 

2 Replies
  1. 1

    Ci sono molte ragioni per cui la funzione mail() non funziona a volte, si Prega di leggere questo post
    PHP mail() non funziona

    Mi raccomando di usare PHPMailer Biblioteca, è gratuito, facile da usare ed è molto più affidabile rispetto a quella nativa di php mail() la funzione

    • ti sei perso un punto molto importante. OP è l’utilizzo di Gmail SMTP. mail() funzione non supporta l’autenticazione e la crittografia.
  2. 0

    Penso che ti manca la configurazione email.

    È possibile configurare questo in php.ini, vedere un esempio qui: http://www.quackit.com/php/tutorial/php_mail_configuration.cfm

    Avrete bisogno di un server SMTP, il modo più semplice per farlo è quello di utilizzare un servizio gratuito come mandrillo (http://mandrill.com/). Iscriviti per un account e potrai vedere i dettagli SMTP. Entrare in questi dettagli nel tuo php.ini e l’e-mail verrà inviato tramite un server SMTP da mandril.

    In alternativa, è possibile impostare un server SMTP locale, ma immagino che questo sarà molto più fastidio 🙂

    • Ho aggiornato il mio post
    • Hai un server SMTP in esecuzione su localhost?

Lascia un commento