我正在生成一封电子邮件,我注意到我的一些内联CSS样式没有正确显示。经过进一步调查,似乎我的输出在整个字符串中随机获得换行符。这是PHP发生换行的部分
<?php
$message .= '<ul style="list-style:none">';
foreach ($fileLinks as $key => $value)
{
$message .= '<li><a style="font-family:sans-serif;background:#1F6FA9;color:#fff;padding:5px;text-decoration:none;border-radius:3px;margin-bottom:10px;display:inline-block;" href="' . $value . '">Download ' . $fileNames[$key] . '</a></li>';
}
$message .= '</ul>';
?>
这对我来说很好看
输出的一个示例,其中字符串断开并转到一个新的行搞乱我的内联css将是(我添加行号以使其更容易阅读):
1. <ul style="list-style:none">
2. <li><a style="font-family:sans-serif;background:#1F6FA9;color:#fff;padding:5px;text-decoration:none;border-radius:3px;margin-
3. bottom:10px;display:inline-block;" href="http://myserver.com/file-transfer/download.php?i=Li4vdXBsb2Fkcy8wNi0xMi0yMDE1L2JnLmpwZw==">Download bg.jpg</a></li>
4. <li><a style="font-family:sans-serif;background:#1F6FA9;color:#fff;padding:5px;text-decoration:none;border-radius:3px;margin-bottom:10px;display:inline-block;" href="http://myserver.com/file-transfer/download.php?i=Li4vdXBsb2Fkcy8wNi0xMi0yMDE1L3NsaWRlMS5qcGc=">Download slide1.jpg</a></li>
5. <li><a style="font-family:sans-serif;background:#1F6FA9;color:#fff;padding:5px;text-decoration:none;border-radius:3px;margin-bottom:10px;display:inline-block;" href="http://myserver.com/file-transfer/download.php?i=Li4vdXBsb2Fkcy8wNi0xMi0yMDE1L3NsaWRlMS5wZGY=">Download slide1.pdf</a></li>
6. <li><a style="font-family:sans-serif;background:#1F6FA9;color:#fff;padding:5px;text-decoration:none;border-radius:3px;margin-bottom:10px;display:inline-block;" href="http://myserver.com/file-transfer/download.php?i=Li4vdXBsb2Fkcy8wNi0xMi0yMDE1L3NsaWRlMi5qcGc=">Downlo
7. ad slide2.jpg</a></li>
8. <li><a style="font-family:sans-serif;background:#1F6FA9;color:#fff;padding:5px;text-decoration:none;border-radius:3px;margin-bottom:10px;display:inline-block;" href="http://myserver.com/file-transfer/download.php?i=Li4vdXBsb2Fkcy8wNi0xMi0yMDE1L3NsaWRlMi5wZGY=">Download slide2.pdf</a></li>
9. <li><a style="font-family:sans-serif;background:#1F6FA9;color:#fff;padding:5px;text-decoration:none;border-radius:3px;margin-bottom:10px;display:inline-block;" href="http://myserver.com/file-transfer/download.php?i=Li4vdXBsb2Fkcy8wNi0xMi0yMDE1L3NsaWRlMy5qcGc=">Download slide3.jpg</a></li>
10. <li><a style="font-family:sans-serif;background:#1F6FA9;color:#fff;padding:5px;text-decoration:none;border-radius:3px;margin-bottom:10px;display:inline-block;" href="http://myserver.com/file-transfer/download.php?i=Li4vdXBsb2Fkcy8wNi0xMi0yMDE1L3NsaWRlMy5wZGY=">Download slide3.pdf</a></li>
11. </ul>
我无法找到换行符或原因的一致性。有任何想法吗?它在第2-3和第6-7行间断开。
以下是我的标题和send
,以防您需要引用它
<?php
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: file-transfer@myserver.com <file-transfer@myserver.com>' . "\r\n";
$headers .= 'Reply-To: '. $request->email . "\r\n";
$send = @mail('me@gmail.com', 'New Files from Secure File Transfer', $message, $headers);
?>
我尝试过preg_replace来删除任何\ n或\ r
答案 0 :(得分:1)
电子邮件具有线路硬盘和建议的线路长度限制,详见IETF RFC 5322 on "Internet Message Format - IETF Tools"。您可以使用PHPMailer和PEAR Mail等电子邮件库来简化电子邮件处理。
2.1.1。线长限制
此规范对数量有两个限制 一行中的字符。每行字符必须不超过 998个字符,不应超过78个字符,不包括 CRLF。
998字符限制是由于许多实现中的限制 发送,接收或存储无法处理的IMF消息 一行超过998个字符。接收实施会 做好处理一行中任意大量的字符 为了健壮。但是,有很多实现 (符合[RFC5321]的运输要求)不 接受包含超过1000个字符的邮件,包括CR 和每行LF,对于不创建的实现很重要 这样的消息。
更为保守的78字符建议是适应 显示这些的用户界面的许多实现 可能截断或灾难性地包装显示的消息 尽管如此,每行超过78个字符 实现不符合此意图 规范(和[RFC5321]的规范,如果它们确实导致 信息丢失)。同样,尽管存在这种限制 在消息上,显示的实现是有责任的 用于处理a中任意大量字符的消息 为了这个缘故(肯定至少达到998字符限制) 坚固性。