简体   繁体   English

通过电子邮件发送“ textarea” HTML消息

[英]Send “textarea” HTML message by email

I have tried to send the content of my "textarea" through email but this is sent blank. 我试图通过电子邮件发送“ textarea”的内容,但此发送为空。 How to solve it? 怎么解决呢?

My PHP code 我的PHP代码

<?php 
$input = json_decode(file_get_contents("php://input") , true);
$ToEmail = "my-correo@hotmail.com"; 
$EmailSubject = "CONTACTO "; 
$mailheader="Fue enviado por: ".$input['nombre-contacto-2']."\n";
$mailheader .= "From: ".$input['email-contacto-2']."\r\n";
$MESSAGE_BODY.="MENSAJE".$input['msn'];
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die 
("Failure"); 

echo "Saved";

My HTML code: 我的HTML代码:

    <form action="" method="post" target="_blank" 
    onsubmit='event.preventDefault() ;sendForm1("form-contact")' 
     name="form-contact">
    <div class="row">
    <div class="col-sm-12">

  <label for="comment">Mensaje</label>
   <textarea class="form-control" rows="5" id="mensaje"  
   placeholder="Escribir consulta" name="msn"></textarea>        
                    </div>
                </div>
                <div id="send-1"></div>
        <input type="submit" value="send ">
        </form>

My JS code 我的JS代码

   function sendForm1(formName){
   var http = new XMLHttpRequest();
   http.open("POST","send.php",true);
   http.send(JSON.encodeForm(document.forms[formName]));
   http.onreadystatechange = function(){
  if(http.readyState == 4 && http.status == 200){
     console.log(http.responseText);
     document.getElementById("send-1").innerHTML="<h1>sending</h1>";
     }
  }
}
     JSON.encodeForm = function(form){
     var array = {};
    for (key in form) {
    var item=form[key];
    if(form.hasOwnProperty(key) && item == "[object HTMLInputElement]"){
      array[item.name]=item.value;
     }
      }
     return JSON.stringify(array);
    }

The email that I receive is only blank content, what is happening? 我收到的电子邮件只是空白内容,这是怎么回事?

Is the error due to textarea? 错误是由于textarea引起的吗?

You have to change 你必须改变
$MESSAGE_BODY.="MENSAJE".$_POST['msn']; $ MESSAGE_BODY。=“ MENSAJE”。$ _ POST ['msn'];
instead of 代替
$MESSAGE_BODY.="MENSAJE".$input['msn']; $ MESSAGE_BODY。=“ MENSAJE”。$ input ['msn'];

You can wrap your variables in an if statement so you can check if fields are actually filled eg. 您可以将变量包装在if语句中,以便检查字段是否实际填充。

 <?php

 if( isset($_POST['msn']){

  $msn = nl2br(addslashes($_POST['msn'])); //Remove invalid chars by using addslashes

  $ToEmail = "my-correo@hotmail.com"; 
  $headers = "From: $from\n";
  $msn =  "MENSAJE :". $msn;

  mail($toEmail, $headers, $msn) or die ("Failure"); 

Try to be consistent with naming variables to avoid mistakes and allow easy reading. 尝试与命名变量保持一致,以避免错误并易于阅读。

Docs about PHP addslashes: https://www.php.net/manual/en/function.addslashes.php 有关PHP Addlashes的文档: https : //www.php.net/manual/zh/function.addslashes.php

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM