PHP发邮件标题与内容乱码的解决方法

先用函数base64_encode() — 使用 MIME base64 对数据进行编码
标题字符串前加编码类型例如: =?UTF-8?B?
标题字符串后加:?=
邮件header指明Content-type: text/html; charset=utf-8,这样就能防止邮件正文乱码

$to         = ‘zhoz@example.com’;
$subject   = “=?UTF-8?B?”.base64_encode(‘邮件标题’).”?=”;
$headers   = ‘MIME-Version: 1.0′ . “rn”;
$headers .= ‘Content-type: text/html; charset=utf-8′ . “rn”;
// Additional headers
$headers .= ‘To: zhoz <zhoz@example.com>’ . “rn”;
$headers .= ‘From: Admin <admin@example.com>’ . “rn”;
$headers .= ‘Reply-To: zhoz <zhoz@example>’ . “rn”;
mail($to, $subject, $message, $headers);

JS判断邮箱格式

邮箱格式要求是:

  • 必须包含一个并且只有一个符号@
  • 第一个字符不能是’@'或者’.’
  • 不允许出现’@.’或者’.@’或者’-@’或者’@-’
  • 结尾不得是字符’@'或者’.’
  • 字符@后面只能是’A-Za-z0-9′

<script> function checkMail(str){ var strReg=”"; var r; var strText=document.all(str).value; //strReg=/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/i; strReg=/^w+((-w+)|(.w+))*@{1}w+.{1}w{2,4}(.{0,1}w{2}){0,1}/ig; r=strText.search(strReg); if(r==-1) { alert(“邮箱格式错误!”); document.all(str).focus(); } } </script>

<input name=”email” type=”text” class=”input” id=”email” onChange=”checkMail(‘email’)”>