[英]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.