And*_*ndy 14 php email space hotmail
我有一个非常简单的PHP脚本,如:
while ($condition){
echo "<a href="thanks.php?id=".$id."> THANKS </a>";
}
Run Code Online (Sandbox Code Playgroud)
当然,我有更多的代码,但没关系.一旦我创建了这段代码,脚本就会向用户发送一封电子邮件.
INBOX
链接在每一行都没问题,除了最后一个以这种方式显示链接:
tha nks.php?id.....
Run Code Online (Sandbox Code Playgroud)
它在代码之间添加了一个空格.
这只发生在hotmail上.Gmail,雅虎和其他一切工作都很好.
kar*_*can 15
我知道这已经晚了但是有一个替代解决方案对我有用:
使用此行使用base64对整个邮件进行编码:
$message = chunk_split(base64_encode($message));
Run Code Online (Sandbox Code Playgroud)
然后,将此标题附加到此标题:
$headers .= "Content-Transfer-Encoding: base64\r\n\r\n";
Run Code Online (Sandbox Code Playgroud)
这将告诉邮件客户端您的邮件是base64编码的.
Mor*_*red 13
karancan的解决方案可能有效,但根本原因是Hobo所说的.该mail函数每900个字符插入一次换行符(我认为).因此,如果您正在构建带有大量消息的$ message,$message .= "more text";那么一旦该行长度超过900个字符,您将遇到此错误.这很麻烦,因为空间似乎是间歇性的,特别是如果你正在构建一个HTML消息,因为有时候换行会出现在完美的良性位置.
简单的解决方案是在行\r\n\尾添加一个.
有趣的是,这些形式有效:
$message .= "<tr><td>1</td><td>2</td>\r\n";
$message .= '<tr><td>1</td><td>2</td>'."\r\n";
Run Code Online (Sandbox Code Playgroud)
但这不是:
$message .= '<tr><td>1</td><td>2</td>\r\n';
Run Code Online (Sandbox Code Playgroud)
在\r\n必须用双引号括起来,否则字符将只是被添加到文本,而不是创建一个回车/换行符.
小智 11
面临同样的问题,并尝试了大多数这些解决方案,但它不适合我.似乎当线路看起来太长而无法邮寄功能时,它会增加大约900个字符标记的空间.所以添加wordwrap的以下解决方案对我有用.
mail($ to,$ subject,wordwrap($ message),$ headers);
我见过 sendmail 在行太长时插入字符。这里的情况并非如此(因为其他客户端处理得很好),但我想知道 hotmail 是否有您遇到的行长度限制。
echo如果您在, ie中插入换行符,有什么区别吗?
while ($condition){
echo "<a href=\"thanks.php?id=".$id."\"> THANKS </a>\n";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7482 次 |
| 最近记录: |