La funzione mail() ritorna sempre falso nache riempiendo tutti i campi

Ciao,

sto tetsando un form da inserire in un sito ma ho un problema che non so se è dovuto al al fatto che lavoro in locale senza un server smtp installato.

Riempio tutti i campi del form ma quando lancio l'invio mi restituisce il messaggio da visualizzare in caso di falso, ovvero "email error".

ecco il codice:

<?php
        if(isset($_POST['submit']))
        {
            if(empty($_POST['nome'])      ||
               empty($_POST['email'])     ||
               empty($_POST['motivo'])     ||
               empty($_POST['messaggio'])   ||
               !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
               {
               echo "No arguments Provided!";
               // return false;
               }
            else
                {

                    $nome = strip_tags(htmlspecialchars($_POST['nome']));
                    $email_address = strip_tags(htmlspecialchars($_POST['email']));
                    $motivo = strip_tags(htmlspecialchars($_POST['motivo']));
                    $messaggio = strip_tags(htmlspecialchars($_POST['messaggio']));

                    // Create the email and send the message
                    $to = 'mirkocoppola80@gmail.com'; // Add your email address inbetween the '' replacing yourname@yourdomain.com - This is where the form will send a message to.
                    $email_subject = "Website Contact Form:  $nome";
                    $email_body = "You have received a new message from your website contact form.\n\n"."Here are the details:\n\nName: $nome\n\nEmail: $email_address\n\nOggetto: $motivo\n\nMessaggio:\n$messaggio";
                    $headers = "From: mirkocoppola80@gmail.com\n"; // This is the email address the generated message will be from. We recommend using something like noreply@yourdomain.com.
                    $headers .= "Reply-To: $email_address";
                    if (@mail($to,$email_subject,$email_body,$headers))
                        {
                       
                          echo "<p>Email sent successfully!</p>";

                        }
                        else
                        {
                            echo "<p>Email error</p>";
                        }
                }
        }
        ?>
        <form class="form-horizontal col-sm-6 col-sm-offset-3" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="POST">
          <div class="form-group">
            <div class="row">
              <label for="email" class="col-sm-12">Email</label>
            </div>
            <div class="row">
              <div class="col-sm-12">
                <input type="email" name="email" class="form-control" id="email" placeholder="Email">
              </div>
            </div>
          </div>
          <div class="form-group">
            <div class="row">
              <label for="nome" class="col-sm-12">Nome</label>
            </div>
            <div class="row">
              <div class="col-sm-12">
                <input type="text" name="nome" class="form-control" id="nome" placeholder="Nome">
              </div>
            </div>
          </div>
          <div class="form-group">
            <div class="row">
              <label for="motivo" class="col-sm-12">Motivo</label>
            </div>
            <div class="row">
              <div class="col-sm-12">
                <input type="text" name="motivo" class="form-control" id="motivo" placeholder="Motivo">
              </div>
            </div>
          </div>
          <div class="form-group">
            <div class="row">
              <label for="messaggio" class="col-sm-12">Messaggio</label>
            </div>
            <div class="row">
              <div class="col-sm-12">
                <textarea class="form-control" name="messaggio" rows="5" id="messaggio" placeholder="Motivo">Inserisci il tuo messaggio...</textarea>
              </div>
            </div>
          </div>
          <div class="form-group">
            <div class="">
              <button type="submit" name="submit" class="btn btn-default">Invia</button>
            </div>
          </div>
        </form>

Qualcuno sa aiutarmi?

inviato 10 mesi fa
lisarko8077
X 0 X

lisarko8077, secondo il manuale di PHP la funzione mail ritorna sempre FALSO quando il server non e' configurato per inviare email. Questo puo anche essere il caso se l'amministratore del server disabilita questa funzione attraverso la direttiva PHP.ini disable_functions, ad esempio per evitare l'invio di spam.

Se non hai controllo sulla configurazione del server, l'alternativa sarebbe quella di usare un component come Zend\Mail, o SwiftMailer, al fine di permettere al tuo codice di connettersi verso un server SMTP esterno; ad esempio in questo modo potresti utilizzare un account GMail per permetter al tuo codice di inviare messaggi di posta elettronica.

risposto 10 mesi fa
Andrea Turso
Andrea Turso
96
X 1 X X

Grazie mille. Non ci avevo pensato. proverò a installarlo.

Grazie mille!

risposto 10 mesi fa
lisarko8077
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda