对不起我的英语。
我用php建立了一个链接。我通过电子邮件发送。有时链接(在电子邮件中)已损坏。
当我确实单击(或复制到浏览器)时,已在随机位置插入了一个空白区域。
知道吗?
生成邮件,代码如下:
$url="www.example.com/dir/subdir/page.php?param1=$p1¶m2=$p2¶m3=$p3[...]¶m20=$p20";
[...]
$body .= "<td><a href='"$url'">";
$body .= htmlentities($url,ENT_NOQUOTES,'ISO-8859-1');
$body .= "</a></td>";
[...]
$headers = "From: $companyName < $companyMail > 'r'n";
$headers .= "Reply-To: $companyMail 'r'n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1 ";
$headers .= "Content-Type: text/html; charset=ISO-8859-1";
$headers .= "MIME-Version: 1.0 ";
mail($client, "Confirmaton", $body, $headers);
页面上收到的参数示例.php
法典:
echo "<pre>Request:<br>";
print_r($_REQUEST);
echo "</pre><br>";
exit;
case OK:
Request:
Array
(
[p1] => value1
[p2] => value2
[p3] => value3
[p3] => value5
[p4] => value6
[p5] => value7
(...)
[p20] => value20
)
Error1 (link with space in value)
Request:
Array
(
[p1] => value1
[p2] => val ue2
[p3] => value3
[p3] => value5
[p4] => value6
[p5] => value7
(...)
[p20] => value20
)
Error2 (link with space in variable)
Request:
Array
(
[p1] => value1
[p2] => value2
[p_3] => value3
[p3] => value5
[p4] => value6
[p5] => value7
(...)
[p20] => value20
)
尝试强制 php 以避免包装链接:
$link = wordwrap($url, 255, "'r'n");
这可能是由每个邮件客户端放入电子邮件正文的换行符引起的。
空格
和换行符会破坏您的网址。这不是一个错误。它是您的 smtp 服务器的行限制。因此,RFC 2821 和 5321 定义了最大行长度:包括 在内的文本行的最大总长度为 1000(有时为 990)八位字节(不计算为透明度而复制的前导点)。通过使用 SMTP 服务扩展,可以增加此数字。
我的解决方案是每次<td>
或<tr>
后换行。
$body .= "<td><a href='"$url'">";
$body .= htmlentities($url,ENT_NOQUOTES,'ISO-8859-1');
$body .= "</a></td>'n";