2017-08-13 4 views
-3

Mon formulaire de contact sur ma page Web envoie enfin des e-mails, mais il ne l'envoie pas dans le bon format. Voici l'email de ce que je reçois. J'ai brouillé le courriel et l'organisation pour des raisons de confidentialité.formulaire php envoi d'e-mail, mais pas de manière correcte

updated email outcome

Quoi qu'il en soit, comme vous pouvez le voir sur la photo, le nom, l'email et le contenu du message que la personne aurait écrit sous la forme de contact sont dans la ligne de sujet au lieu de l'e-mail réelle box- - J'ai noté jibberjabber quand je remplissais le formulaire pour le tester. Est-il possible que je puisse formater mon code afin que le message et le nom qu'ils ont écrit soient dans la boîte de message au lieu de la boîte d'objet, et l'email est envoyé par la personne qui a mis leur email dans le formulaire. Toute aide est grandement appréciée, et merci d'avance!

Voici mon code à ce jour:

HTML

 <form id="main-contact-form" name="contact-form" method="post" action="sendemail.php" accept-charset="UTF-8"> 
    <div class="row wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms"> 
     <div class="col-md-6"> 
      <div class="form-group"> 
       <input type="text" name="name" class="form-control" placeholder="Name" required="required" style="color: #ffffff"/> 
      </div> 
     </div> 
     <div class="col-md-6"> 
      <div class="form-group"> 
       <input type="email" name="email" class="form-control" placeholder="Email Address" required="required" style="color: #ffffff"/> 
      </div> 
     </div> 
    </div> 
    <div class="form-group"> 
     <textarea name="message" id="message" class="form-control" rows="4" placeholder="Enter your message" required="required" style="color: #ffffff"></textarea> 
    </div> 
    <div class="form-group"> 
     <button type="submit" class="btn-submit">Send Now</button> 
    </div> 
</form> 

CSS-- Je vais le mettre ici juste au cas où.

#contact { 
    background-image: url(../images/contact-bg.jpg); 
    padding-bottom: 0; 
    height: auto; 
    background-attachment: fixed; 
} 

#contact .heading { 
    padding-top: 95px; 
} 

#main-contact-form { 
    text-align: center; 
} 

.contact-info { 
    text-align: left; 
} 

form { 
    align: center; 
    margin: 0 auto; 
} 

.form-control { 
    background-color: transparent; 
    border-color: rgba(255, 255, 255, .8); 
    height: 50px; 
    border-radius: 1; 
    box-shadow: none; 
} 

textarea.form-control { 
    min-height: 180px; 
    resize: none; 
} 

.form-group { 
    margin-bottom: 30px; 
} 


ul.address { 
    margin-top: 30px; 
    list-style: none; 
    padding: 0; 
    margin: 0; 
} 

.contact-info ul li { 
    margin-bottom: 8px; 
} 

.contact-info ul li a { 
    color: #fff; 
} 

.btn-submit { 
    display: block; 
    padding: 12px; 
    width: 100%; 
    color: #fff; 
    border: 0; 
    margin-top: 40px; 
} 

Java Script

 (function ($) { 
     var messages = { 
      'progress': '<p><i class="fa fa-spinner fa-spin"></i> Sending email...</p>', 
      'success': '<p class="text-success">Thank you for contacting us. We will contact you as early as possible.</p>', 
      'error': '<p class="text-danger">Aw snap! Something didn\'t go right!</p>' 
     }; 
     var $form = $('form#main-contact-form'); 
     var formStatus = $('<div class="form_status"/>'); 
     $form.submit(function (e) { 
      e.preventDefault(); 
      $.ajax({ 
       type: 'POST', 
       url: $form.attr('action'), 
       data: $form.serialize(), 
       dataType: 'json', 
       beforeSend: function() { 
        formStatus.html(messages.progress).fadeIn().prependTo($form); 
       }, 
       success: function (data) { 
        if (data.success === true) { 
         formStatus.html(messages.success); 
        } else { 
         formStatus.html(messages.error); 
        } 
        formStatus.fadeIn().delay(3000).fadeOut(); 
       }, 
       error: function() { 
        formStatus.html(messages.error).fadeIn().delay(3000).fadeOut(); 
       } 
      }); 
     }) 
    })(jQuery); 

PHP

<?php 
$to = '[email protected]'; 
$name = !empty($_POST['name']) ? filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING) : ''; 
$from = !empty($_POST['email']) ? filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL) : $to; 
$message = !empty($_POST['message']) ? filter_var(trim($_POST['message']), FILTER_SANITIZE_STRING) : ''; 

$body = "Name: {$name}\r\nEmail: {$from}\r\nMessage: {$message}"; 

$body = wordwrap($body, 70, "\r\n"); 

$headers = [ 
    'MIME-Version: 1.0', 
    'Content-type: text/plain; charset=iso-8859-1', 
    "From: $name <$from>", 
    "Reply-To: <$from>", 
    'X-Mailer: PHP/' .phpversion() 
]; 
    $subject = 'some subject'; 
$success = mail($to, $body, implode("\r\n", $headers)); 

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') { 
    die(json_encode(['success' => $success])); 
} 

echo $success ? 'Sent Successfully.' : 'An error occurred'; 

ini_set('display_errors', 1); error_reporting(E_ALL); 

?> 
+1

garder à l'esprit - Ne pas poster la question et plus - cela peut conduire à [interdiction de question] (https://stackoverflow.com/help/ question-bans) s, en ayant des questions downvoted/deleted. –

Répondre

2

Il vous manque le paramètre sujet, lisez the docs.

En outre, '\r\n' n'est pas la même chose que "\r\n"

$subject = 'some subject'; 
$success = mail($to, $subject, $body, implode("\r\n", $headers)); 
+0

J'ai ajouté vos suggestions dans mon code, et cette fois, je n'ai même pas reçu d'e-mail. Aussi, j'ai édité ma question pour montrer votre code. – Nora

+0

J'ai vérifié encore, un peu plus tard, en pensant que cela a peut-être pris du temps pour que le site fonctionne, et cette fois j'ai reçu un email. Si vous regardiez ma question, j'ai mis à jour l'image. Je reçois toujours le même résultat, mais au moins le contenu du message est dans une sorte de format. Le message est toujours dans le titre, cependant. – Nora

+0

montre aussi le code PHP mis à jour. Je vous recommande d'essayer quelque chose de plus simple, il suffit d'avoir une page quelque part qui ne fait rien de fantaisiste mais envoyer un e-mail, et assurez-vous de suivre les docs – Isaac