2010-09-09 9 views
1

Bonjour, j'ai développé un script de newsletter pour envoyer des e-mails HTML.Erreur dans les liens HTML qui envoient des e-mails à Gmail

Tout fonctionne très bien pour les clients de messagerie de bureau, mais je remarque quand j'envoie à un compte gmail, les liens html ne fonctionnent pas alors que les images incorporées, CSS, mise en page fonctionnent très bien. changement Gmail

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

à

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

j'ai trouvé quelques sujets autour, sans solutions.

c'est comment je construis l'e-mail, dans le corps de $ var sont les liens HTML standard:

fonction

send_mail ($ de, $ à, $ subject, $ body, $ site_skin, $ nom_site, $ site_url { // en-tête général $ header = "De: $ nom_site \ n"; $ header. = "BCC: $ à \ 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); 

}

Répondre

1

Je pense qu'il n'y a rien de mal avec votre code; On dirait que c'est Gmail qui supprime les liens de votre code HTML à leur fin.

Peut-être que vos URL ne respectent pas leurs filtres anti-spam, ou quelque chose comme ça?

Si c'est le cas, je ne sais pas si vous pouvez faire quelque chose dans votre code PHP pour améliorer les choses (à moins d'envoyer l'email en texte brut au lieu de html).

+0

le code était correct, j'ai inséré un faux lien qui était en noir, ou quelque chose comme ça, en insérant un autre lien tout fonctionne bien. – Mike