2017-10-14 9 views
0

Salut les gars, je suis en train d'envoyer un e-mail HTML avec php. Lorsque je clique sur le bouton sur une page, il charge le fichier php et envoie les données qui devraient aller dans le courrier. Ces données sont du code HTML, j'utilise aussi la même variable/code pour générer du contenu dans ce fichier PHP. Le contenu est généré à la perfection mais l'e-mail est vide, mais j'utilise la même variable que celle que j'utilise pour créer du contenu sur cette page. Le code estEnvoi de courrier PHP avec HTML

      <?php 
          $message=$_POST["email"]; 
          echo $message;//Use variable to generate content 
          if (isset($_POST['button1'])) 
          {   

            $to = '[email protected]';                    
            $subject = 'Subject'; 
            $headers[] = 'MIME-Version: 1.0'; 
            $headers[] = 'Content-type: text/html; charset=iso-8859-1'; 
            mail($to, $subject, $message, implode("\r\n", $headers)); 
          }        
          ?> 
          <form method="POST" action=''> 
          <input type="submit" name="button1" value="Send mail" class="btn"> 

EDIT: Si je tape manuellement le code html cela fonctionne.

Répondre

2

Vos en-têtes semblent correctes selon la documentation (https://secure.php.net/manual/en/function.mail.php) # 4.

Le champ "email" que vous utilisez dans la ligne 2 du code n'est pas inclus dans le formulaire!

<?php 

function mailX($to, $subject, $message, $headers) { 
    var_dump($message); 
} 

if (array_key_exists('button1', $_POST)) { 
    $headers[] = 'MIME-Version: 1.0'; 
    $headers[] = 'Content-type: text/html; charset=iso-8859-1'; 

    mailX(
     '[email protected]', 
     'Subject', 
     array_key_exists('email', $_POST) && !empty($_POST['email']) ? $_POST['email'] : 'Empty message!', 
     implode("\r\n", $headers) 
    ); 
} 

?> 
<form method="POST"> 
    <input type="text" name="email"> 
    <input type="submit" class="btn" name="button1" value="Send mail"> 
</form> 

Vous devriez vraiment éviter d'envoyer HTML entré par l'utilisateur via E-Mail cela peut provoquer XSS injection car ils pourraient faire des choses comme par exemple

<script>alert('TEST');</script> 

Je vous suggère d'utiliser une bibliothèque comme PHPMailer (https://github.com/PHPMailer/PHPMailer) ou SwiftMailer (https://swiftmailer.symfony.com/) les deux sont source libre/open. Vous avez facilement la possibilité d'envoyer les mails via SMTP (ce qui est requis par certains hébergeurs pour éviter les spams), les librairies optimisent également vos en-têtes en fonction des paramètres pour être valides/compatibles avec la plupart des clients mail.

+0

Donc, aucune idée comment cela pourrait être réparé? :) – guber90

+0

Cela n'envoie pas de courrier à mon email doit être je fais quelque chose de mal cus je n'ai pas beaucoup d'expérience dans la programmation web. (Je modifie [email protected] à mon email) – guber90

+1

Cela pourrait être le problème en utilisant la fonction mail. Je ne peux que vous donner de l'aide pour votre script - cela ne veut pas dire que j'écrirai vos scripts;) – SebTM