我正在尝试发送一封带有附件的电子邮件,以前一切都很好。但后来我们切换了服务器,现在它不再工作了,所以我开始调试。我得出的结论是,如果邮件包含冒号,则发送的电子邮件中将不会包含该邮件。
当我删除冒号时,电子邮件会发送包括邮件在内的所有内容。
有人能告诉我冒号是如何中断正在发送的消息的吗?
这是我当前的代码:
$from_name = "From name";
$from_mail = "inbox@inbox.nl";
$replyto = "no-reply@email.nl";
$message = "This is a: test";
$content = "This is the content";
$subject = "Test";
$mailto = "receiver@provider.nl";
$bijlage_naam = "test.xml";
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: ".$from_name." <".$from_mail.">rn";
$header .= "Reply-To: ".$replyto."rn";
$header .= "MIME-Version: 1.0rn";
$header .= "Content-Type: multipart/mixed; boundary="".$uid.""rn";
$header .= "This is a multi-part message in MIME format.rn";
$header .= "--".$uid."rn";
$header .= "Content-type:text/plain; charset=iso-8859-1rn";
$header .= "Content-Transfer-Encoding: 7bitrn";
//$header .= $message."rn";
$header .= "--".$uid."rn";
$header .= "Content-Type: application/octet-stream; name="$bijlage_naam"rn"; // use different content types here
$header .= "Content-Transfer-Encoding: base64rn";
$header .= "Content-Disposition: attachment; filename="$bijlage_naam"rn";
$header .= $content."rnrn";
//$header .= "--".$uid."--";
if (mail($mailto, $subject, $message, $header)) {
return 1;
} else {
return 0;
}
我不确定冒号是否会影响您发送电子邮件。
但是如果你把你的信息放在头
$header .= $message; //I found it in your code
会出现问题,因为标头使用:
来定义某些内容。
我建议您使用拆分这些冒号。有一个简单的PHP函数可以做到这一点:
$header .= str_replace(":", ":", $message).
您可以查看是否可以再次发送。
您不应该将消息放在标头中,而是放在适当的$message
参数中。。。