我试图通过电子邮件发送" textarea"的内容,但这是空白的。如何解决它?
我的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']."rn";
$MESSAGE_BODY.="MENSAJE".$input['msn'];
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die
("Failure");
echo "Saved";
我的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>
我的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);
}
我收到的电子邮件仅是空白的内容,正在发生什么?
由于textarea引起的错误吗?
您必须更改
$ message_body。=" mensaje"。$ _ post ['msn'];
而不是
$ message_body。=" mensaje"。$ input ['msn'];
您可以将变量包装在if语句中,以便您可以检查字段是否实际填充。
<?php
if( isset($_POST['msn']){
$msn = nl2br(addslashes($_POST['msn'])); //Remove invalid chars by using addslashes
$ToEmail = "my-correo@hotmail.com";
$headers = "From: $fromn";
$msn = "MENSAJE :". $msn;
mail($toEmail, $headers, $msn) or die ("Failure");
尝试与命名变量保持一致,以避免错误并易于阅读。
关于php addslashes的文档:https://www.php.net/manual/enual/en/function.addslashes.php