我正在尝试创建并提交网站表单,并在提交所有字段后发送邮件。数据通过ajax调用提交。
问题是我的网站用户使用UTF-8工作,如果我使用Internet Explorer提交表单,除非我执行utf8_encode(),否则不会以UTF-8发送信息(来自表单)。但如果我使用ut8_encode函数发送电子邮件,Firefox和Chrome就会停止工作......
一些说明: - 包含表单的php文件包含UTF-8标头 - 元标签UTF-8 - 在ajax.php(提交表单的文件)中也有UTF-8标题 - 以UTF-8字符集(独立于浏览器)
接收电子邮件标题代码: 的 ajax.php
$email = $_REQUEST['email'];
$phone = $_REQUEST['phone'];
$reply = $_REQUEST['reply'];
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: '.$email . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$topic = 'subject';
$message = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body style="font-size:11px; font-family:Verdana, sans-serif; line-height:17px;">
<h1 style="color:#255670; font-size:16px; font-family: \'Trebuchet MS\', sans-serif; text-transform:uppercase;">Quizz</h1>
<div style="background-color:#EFEFEF; padding:10px;">
Nome: <b>'.$name.'</b><br />
Telefone: <b>'.$phone.'</b><br />
E-mail: <a href="mailto: '.$email.'"><b>'.$email.'</b></a><br />
</div>
<div style="border-top:1px dashed #8CD3D7; padding:5px; margin:10px 0px 0px 0px;">
<p>'.$reply.'</p>
</div>
</body></html>';
$sendMail = mail($adminMail, $topic, $message, $headers);
index.php(表格)
<form method="GET" enctype="text/plain" accept-charset="utf-8">
<div class="banner-subtitle">Resposta:</div>
<textarea name="reply" id="quizz-reply" style="width:255px;"></textarea>
<div class="banner-subtitle">%NAME%:</div>
<input type="text" id="quizz-name" class="required" name="name" style="width:255px;"/>
<div class="banner-subtitle">%PHONE%:</div>
<input type="text" id="quizz-phone" class="required" name="name" style="width:255px;"/>
<div class="banner-subtitle">%EMAIL%:</div>
<input type="text" id="quizz-email" class="required" name="email" style="width:255px;"/>
<div class="banner-subtitle">%SECURITY_CODE%:</div>
<img style="float:left; margin-right:10px" src="ajax.php?action=generateCaptcha&width=80&height=20&cell=security_code2"/><input type="text" id="quizz-security-code" class="required" name="security_code2" style="width:80px; float:left"/>
<input type="button" value="%SUBMIT%" onclick="sendOpinion()" style="margin-top: 1px"/>
</form>
Ajax请求
$.ajax({
url:'ajax.php?action=sendOpinion&name='+name+'&email='+email+'&phone='+phone+'&passport='+passport+'&reply='+reply,
success: function(data)
{
//alert(data);
$('#quizz-name').val('');
$('#quizz-email').val('');
$('#quizz-phone').val('');
$('#quizz-passport').val('');
$('#quizz-reply').val('');
}
});
有人可以帮忙吗?我无法理解我做错了什么......
答案 0 :(得分:2)
声明您网站的编码;将其添加到<head>
标记中:
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
顺便说一句,你应该逃避你的变量,即使是在电子邮件中:
Nome: <b>'.htmlspecialchars($name, ENT_QUOTES, 'UTF-8').'</b><br />
在网址中也是如此:
url:'ajax.php?action=sendOpinion&name='+encodeURIComponent(name)+'...