我们升级了我们的PHP版本,现在收到错误“警告:mail():在additional_header中找到多个或格式错误的换行符”。
我已经创造了不同的实验,但没有任何工作。我道歉,因为我不太熟悉所有这些是如何工作的,所以请耐心等待。
目标(在早期版本中有效)是发送基于HTML的消息(有, 标签等)包括我们服务器上存在的PDF附件。
如果你能给我具体的调整,我会非常感激!
$sFrom = "[Company Name] <[Our Email]>";
$sReplyTo = "[Our Email]";
$sParams = "-f [Our Email]";
$attachment = chunk_split(base64_encode(file_get_contents($sPath)));
$uid = md5(uniqid(time()));
$sHeaders = "From: ".$sFrom."\n".
"Reply-To: ".$sReplyTo."\n".
"MIME-Version: 1.0\n".
"Content-Type: multipart/mixed; boundary=\"".$uid."\"\n\n".
"This is a multi-part message in MIME format.\n".
"--".$uid."\n".
"Content-Type: text/html; charset='iso-8859-1'\n".
"Content-Transfer-Encoding: 7bit\n\n".
$sMessage."\n\n".
"--".$uid."\n".
"Content-Type: application/pdf; name=\"".$sFileName."\"\n".
"Content-Transfer-Encoding: base64\n".
"Content-Disposition: attachment; filename=\"".$sFileName."\"\n\n".
$attachment."\n\n".
"--".$uid."--";
if (!mail($sTo, $sSubject, "", $sHeaders, $sParams)) {
$bError = true;
}
因为qazxsw poi不再允许多次换行(或者此刻?)。尝试切换到PEAR Mailer,PHPMailer或其他东西。
使用mail()发送带有附件的php邮件需要多个换行符https://bugs.php.net/bug.php?id=68776 ...
尝试使用"\n\n"
而不是\\\n
。
1)尝试附加到未初始化的变量$ sMessage时会出错。还要检查其他变量是否具有预期内容($ sTo,$ sSubject)。
2)您将邮件内容从标题移动到邮件中但忘记将邮件添加到邮件功能中,如果(!mail($ sTo,$ sSubject,“”,$ sHeaders,$ sParams))将成为if(!mail($ sTo) ,$ sSubject,$ sMessage,$ sHeaders,$ sParams))
3)“multipart / mixed”之后你还有多个换行符
4)删除“这是MIME格式的多部分消息”这一行我在这里更新了你的代码:
\n
这是php up渐变更改.PHP mail()函数中的安全风险已得到修复,不再允许使用额外的换行符。
请删除additional_headers参数中的多个换行符。这些计为“多个或格式错误的换行符”:\ r \ n \ r,\ r \ n,\ r \ n \ r \ n,\ n \ n,\ n \ 0。