我们升级了我们的PHP版本,现在收到错误"警告:mail():在additional_header"。
中找到多个或格式错误的换行符我已经尝试了不同的事情,但是没有任何工作可做。我道歉,因为我不太熟悉所有这些是如何工作的,所以请耐心等待。
目标(在早期版本中有效)是发送基于HTML的消息(has,
标签等),其中包含我们服务器上存在的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;
}
答案 0 :(得分:0)
因为https://bugs.php.net/bug.php?id=68776不再允许多次换行(或者目前?)。尝试切换到PEAR Mailer,PHPMailer或其他东西。
使用mail()发送包含附件的php邮件需要多个换行符"\n\n"
答案 1 :(得分:0)
尝试使用\\\n
代替\n
。
答案 2 :(得分:0)
1)尝试附加到未初始化的变量 $ sMessage 时会出错。还要检查其他变量是否具有预期内容($ sTo,$ sSubject)。
2) 您将邮件内容从标题移动到邮件中,但忘记将其添加到邮件功能中 if(!mail($ sTo,$ sSubject,&#34;&#34;,$ sHeaders,$ sParams)) 会变成 if(!mail($ sTo,$ sSubject, $ sMessage ,$ sHeaders,$ sParams))
3)在&#34; multipart / mixed&#34;
之后,您仍然有多个换行符4)删除lineof&#34;这是MIME格式的多部分消息&#34; 在这里,我更新了您的代码:
$sFrom = "me@aju.ro";
$sReplyTo = "me@aju.ro";
$sParams = "-f me@aju.ro";
$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".
"--".$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($sReplyTo, $sSubject, $sMessage, $sHeaders, $sParams)) {
$bError = true;
}
答案 3 :(得分:0)
这是php up渐变更改.PHP mail()函数中的安全风险已得到修复,不再允许使用额外的换行符。
请删除additional_headers参数中的多个换行符。这些计为&#34;多个或格式错误的换行符&#34;:\ r \ r \ n,\ r \ n \ 0,\ r \ n \ r \ n,\ n \ n,\ n \ n。
答案 4 :(得分:0)
在SMTP标准https://tools.ietf.org/html/rfc2045#section-2.1中,换行符定义为\r\n