views:

94

answers:

2

Hello i have developed a newsletter script to send HTML emails.

Everything works great receiving to desktop email clients, but i notice when i send to a gmail account, the html links are not working while embedded images, css, table layout work great. Gmail change

<a href="myurl" title="My url">link</a>

to

<a title="My url">link</a>

i found a few topics around, without solutions.

this is how i build the email, in the $body var are the standard html links:

function send_mail ($from,$to,$subject,$body,$site_skin,$site_name,$site_url) { //general header $header = "From: $site_name \n"; $header .="BCC: $to \n"; $header .= "X-Mailer: PHP5.3\n";

//separator string
$boundary = "==String_Boundary_x" .md5(time()). "x";

// specific message header
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/related;\n";
$header .= " boundary=\"$boundary\";\n\n";

//this part is viewed only if the program cannot manage the MIME
$message = "your software dosen't support MIME\n\n";
$message .= "--$boundary\n";
$message .= "Content-Type: text/html; charset=\"utf-8\"\n";
$message .= "Content-Transfer-Encoding: 7bit\n\n";

$title_newsletter ="$subject";
$mail_body = $body; 
$subject = "$titoloNSL";
$mail_site_url="$site_url";

include ("../../../../themes/skins/$site_skin/email/email.php");
$message .= "$htmlBody";

$message .= "--$boundary\n";
$message .= "Content-ID: <header>\n";
$message .= "Content-Type: image/jpeg\n";
$message .= "Content-Transfer-Encoding: base64\n\n";

$embedded_file = "../../../../themes/skins/$site_skin/images/mail_header.jpg";
$file = fopen($embedded_file,'rb');
$data = fread($file,filesize($embedded_file));
fclose($file);

$data = chunk_split(base64_encode($data));
$message .= "$data\n\n";

$message .= "--$boundary\n";
$message .= "Content-ID: <go>\n";
$message .= "Content-Type: image/gif\n";
$message .= "Content-Transfer-Encoding: base64\n\n";

$embedded_file = "../../../../themes/skins/$site_skin/images/go.gif";
$file = fopen($embedded_file,'rb');
$data = fread($file,filesize($embedded_file));
fclose($file);

$data = chunk_split(base64_encode($data));
$message .= "$data\n\n";

$message .= "--$boundary--\n";

@mail($to, $subject, $message, $header); 

}

A: 

Have you tried using PHPMailer to send emails? I used it recently in two projects, and emails are working like a charm - as you said, many links, graphics and other HTML elements.

Tomasz Kowalczyk
+1  A: 

My guess is that there's nothing wrong with your code; it looks like it's Gmail that's stripping the links out of your HTML at their end.

Possibly your URLs are falling foul of their spam filters, or something like that?

If that's case, I don't know that there's anything you can do in your PHP code to improve things (short of sending the email as plain text instead of html).

Spudley
the code was right, i inserted i wrong link that was black listed, or something like that, inserting another link all works fine.
TrustWeb