2009-11-24 120 views
2

我遇到一个奇怪的问题,难以诊断,因为
它是随机的。我已经构建了一个应用程序发送一个电子邮件
很好的文字量(没有确切的字符数,但可以得到它)。电子邮件中的空白问题

在html电子邮件中,内容中随机出现一个空格。

请参阅以下的空间如何飘荡,是随机的例子:

1- "Th ere are several things being discussed in this email." 
2- "There are se veral things being discussed in this email." 
3- "There are severa l things being discussed in this email." 

这whitepace问题也发生了联系。到目前为止,在hotmail和gmail中发现了这个问题。

有人有什么想法吗?

$ header =“MIME-Version:1.0 \ r \ n”;
$ header。=“Content-type:text/html; charset = utf-8 \ r \ n”;
$ header。=“From:abc \ r \ n”;
$ subject =“abc”;
$ mail_body =“Hello!”;
$ mail_body。=“content”;
邮件($ email_address,$ subject,$ mail_body,$ header);

也就是说代码给你一个想法大致..

回答

0

如果您发布违规代码,因为有可能导致这许多事情这将有助于。

你使用mail()或phpmailer或swiftmailer吗? 您的电子邮件是多部分还是纯文字? 你自己解析你的模板吗?

如果它是HTML,请张贴的HTML代码客户端接收等

是否有可能存在尾/航向的空间,当你连接字符串? 尝试“微调”明添加到您$ mail_body就像每个元素:

$mail_body .= trim($content); 
+0

嗨特里...我刚刚发布了示例代码给你一个想法.. – rico 2009-11-24 03:59:49

+0

那么你的伪代码似乎没有问题。修改答案以允许格式化。 – 2009-11-24 04:15:00

0

如果电子邮件的你“查看源文件”,是在源的空间,还是仅仅出现在渲染(可见)文本?我要做的第一件事就是看看电子邮件的来源,看看发生了什么 - 我不会相信用于调试的渲染/可见文本。

另外,你说“在html电子邮件”。这意味着您可能会向不同的人发送纯文本版本,或者发送给同一个人(作为多部分消息)。如果是这样的话,你能确认它不在吗?

正如Terry所说,你可以发布一些代码,特别是发送消息的代码和构建消息文本的发送代码的一些/全部(如果很短)代码?

+0

我刚刚发布的代码..hope有帮助。 问题是...即使链接有空白,它被转换为“+”号,并打破了链接。白色空间也是HTML源代码。不幸的是,我无法分享这封电子邮件,因为它是一封私人邮件......这又是随机发生的。 如此令人沮丧... – rico 2009-11-24 04:07:07

+0

如果是我,我会添加代码以在每次发送消息时将正文文本保存到临时日志文件(以及任何日期/时间戳,主题等等)识别来自另一个的消息)。 然后每次出现神秘的空间时,我都会将相应的日志文件条目与该消息进行比较。这至少可以让你弄清楚你的脚本是否在做,或者它是“以太”。 当然,你的脚本可能会插入空格。但是,然后你可以尝试不同的方法(日志文件)。 – Chirael 2009-11-24 04:27:07

+0

一些尝试的东西...当你不需要变量插值时,尝试使用单引号。 不是在该函数的部分中建立字符串,而是将消息构建放入其自己的函数中,并将填充值作为参数放入,并返回一个大的消息字符串。然后,当然,单元测试地狱出信息构建功能:) (我个人喜欢创建消息模板文件,如“亲爱的[姓名],感谢您购买[产品]等”,然后有一个通用的函数读取文件并进行替换 - 通过这种方式,您可以更改没有编辑代码的消息) – Chirael 2009-11-24 04:34:11

1

当你有一个长行并且在RFC的72字符建议之后它自动被分解到下一行时,你可能会遇到这个问题。

其中

hey lots of stuff here Jimmy will probably be way longer than 72 characters 

将成为

hey lots of stuff here Jimmy will probably be way longer than 72 charac 
ters 

而这将在一个HTML电子邮件呈现为

hey lots of stuff here Jimmy will probably be way longer than 72 charac ters 
0

的问题,据我了解,是从您的线路运行时间过长。 PHP邮件程序增加了换行符(以及与它们一起的空白区)来分割长行。

我对此的建议是在行尾添加“\ r \ n”。这故意在您的文本中添加换行符,让邮件程序自行完成。例如:

There are several things being discussed in this email.\r\n 

注意双引号在这里使用。单引号将简单地附加到您的文本\ r \ n。

仅供参考:This question回答同样的问题时,我有它。