PHP邮件 - 找到多个或格式错误的换行符

问题描述 投票:4回答:4

我们升级了我们的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;
}
php email mime-types email-headers
4个回答
0
投票

因为qazxsw poi不再允许多次换行(或者此刻?)。尝试切换到PEAR Mailer,PHPMailer或其他东西。

使用mail()发送带有附件的php邮件需要多个换行符https://bugs.php.net/bug.php?id=68776 ...


0
投票

尝试使用"\n\n"而不是\\\n


0
投票

1)尝试附加到未初始化的变量$ sMessage时会出错。还要检查其他变量是否具有预期内容($ sTo,$ sSubject)。

2)您将邮件内容从标题移动到邮件中但忘记将邮件添加到邮件功能中,如果(!mail($ sTo,$ sSubject,“”,$ sHeaders,$ sParams))将成为if(!mail($ sTo) ,$ sSubject,$ sMessage,$ sHeaders,$ sParams))

3)“multipart / mixed”之后你还有多个换行符

4)删除“这是MIME格式的多部分消息”这一行我在这里更新了你的代码:

\n

0
投票

这是php up渐变更改.PHP mail()函数中的安全风险已得到修复,不再允许使用额外的换行符。

请删除additional_headers参数中的多个换行符。这些计为“多个或格式错误的换行符”:\ r \ n \ r,\ r \ n,\ r \ n \ r \ n,\ n \ n,\ n \ 0。

© www.soinside.com 2019 - 2024. All rights reserved.