PHP почта, отправляющая письмо с двоеточием в сообщении, не отправит сообщение

Я пытаюсь отправить электронное письмо с приложением, раньше все работало нормально. Но потом мы поменяли серверы, и теперь он больше не работает, поэтому я начал отладку. И я пришел к выводу, что если сообщение содержит двоеточие сообщение не будет включено в отправляемое письмо.

Когда я удаляю двоеточие, электронное письмо отправляет все, включая сообщение.

Может кто-нибудь сказать мне, как двоеточие может прервать отправку сообщения?

Это мой текущий код:

$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.">\r\n";
$header .= "Reply-To: ".$replyto."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n";
//$header .= $message."\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: application/octet-stream;         name=\"$bijlage_naam\"\r\n"; // use different content types here
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment;         filename=\"$bijlage_naam\"\r\n";
$header .= $content."\r\n\r\n";
//$header .= "--".$uid."--";
if (mail($mailto, $subject, $message, $header)) {
return 1;
} else {
return 0;
}

0

Решение

Я не уверен, повлияет ли двоеточие на вас, отправив электронное письмо или нет.

Но если вы поместите свое сообщение в шапку

$header .= $message; //I found it in your code

Там будет проблема, потому что заголовок использует : определить что-то.

То, что я могу порекомендовать вам сделать, это разделить эти двоеточия с \, Существует простая функция PHP, которая может сделать это:

$header .= str_replace(":", "\:", $message).

Вы можете увидеть, если вы можете отправить его снова или нет.

0

Другие решения

Вы не должны помещать свое сообщение в заголовок, но в соответствующий $message параметр …

0