开发者

Whitespace in email issue

开发者 https://www.devze.com 2022-12-12 13:34 出处:网络
I\'m experiencing a strange problem and difficult to diagnose because it\'s random. I have built an application that sends out an email with

I'm experiencing a strange problem and difficult to diagnose because

it's random. I have built an application that sends out an email with

a nice amount of text (don't have exact char count, but could get it).

On the html email, a random whitespace appears in the content.

See below for examples of how the space w开发者_JS百科anders and is random:

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."

This whitepace issue also happens for links. Found this issue in hotmail and gmail so far.

Anybody have any ideas?

$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";

mail($email_address, $subject, $mail_body, $header);

That is the code to give you an idea roughly..


You might be getting this issue when you have a long line and it is automatically broken to then next line after the RFC's 72 char recommendation.

where

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

will become

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

And which would render in a HTML e-mail as

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


If you "view source" of the email message, is the space in the source, or is it just appearing in the rendered (visible) text? First thing I would do is look at the email source to see what's up - I wouldn't trust the rendered/visible text for debugging this.

Also, you said "on the html email". That implies that you might be sending a plain text version either to different people, or maybe to the same people (as a multipart message). If that's the case, can you confirm that it's not there also?

As Terry said, can you post some of the code, specifically the code that sends the message and the some/all (if it's short) of the code that builds the message text up for sending?


It would help if you posted offending code, as there are many things that could cause this.

Do you use mail() or phpmailer or swiftmailer? Are your emails multipart or text only? Do you parse your templates yourself?

If it's HTML, please post the HTML code that clients receive, etc.

Is it possible that there are trailing/heading spaces when you concatenate strings? Try "trim"ming on each element you add to your $mail_body like:

$mail_body .= trim($content);


The issue, as I understand it, is from your lines running too long. The PHP mailer adds line breaks (and with them, white space) to break up long lines.

My recommendation for this is to add "\r\n" to the end of your lines. This purposely adds line breaks to your text, keeping the mailer from doing so on its own. eg:

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

notice double quotes are used here. Single quotes will simply append \r\n to your text.

For reference: This question answered the same question when I had it.

0

精彩评论

暂无评论...
验证码 换一张
取 消