Aller au contenu

[RESOLU] Problème envoi e-mail


gvosnet

Messages recommandés

Hello toutes et tous,

Je planche depuis ce week-end sur un problème surement lié à Free...Mais je n'en suis pas complètement sûr donc j'aimerai avoir votre avis.

Sur mon site (commercial, en PHP), j'ai fait une fonction d'envoi de mail (avec partie HTML et partie texte pour les messageries en ligne qui ne gèrent pas le html).

Jusque là, tout va bien. La fonction envoie nickel les mails en HTML avec des liens et tout.

Par contre, j'ai voulu dernièrement utiliser cette fonction pour effectuer un envoi de newsletter. Cette newsletter se compose d'images qui sont en fait des liens vers le site (classique quoi).

C'est là que les ennuis commencent : impossible d'envoyer une image étant un lien dans l'email.

Exemple :

Si j'envoie ça, ça marche :

<img src="http://www.monsite.fr/newsletter/image.gif" />

Si j'envoie ça, ça marche aussi :

<a href="www.monsite.fr/ma_page.php">Lien vers ma page</a>

Mais si j'envoie ça, ça foire (uniquement sur la messagerie Free, ça fonctionne très bien sur gmail ou autre par exemple...). C'est à dire que le mail n'arrive même pas dans la boite de réception Free :

<a href="www.monsite.fr/ma_page.php"><img src="http://www.monsite.fr/newsletter/image.gif" /></a>

J'ai aussi essayé d'envoyer l'email sur une messagerie Free dont l'anti-spam est désactivé et ça ne change rien.

J'ai donc bien l'impression que c'est Free qui bloque l'e-mail, mais je n'arrive pas à savoir pourquoi...

Si vous avez une solution, je suis preneur.

Aux courageux, merci de m'avoir lu jusqu'ici :-)

Au cas où, voici le code de ma fonction :

function mail_html($destinataire, $sujet , $messtxt, $messhtml , $from)
{
$limite = "_parties_".md5 (uniqid (rand()));

$entete = "Reply-to: $from\n";
$entete .= "From:$from\n";
$entete .= "X-Sender: <www.monsite.fr>\n";
$entete .= "X-Mailer: PHP\n";
$entete .= "X-auth-smtp-user: contact@monsite.fr \n";
$entete .= "X-abuse-contact: webmaster@monsitefr \n";
$entete .= "Date: ".date("D, j M Y G:i:s O")."\n";
$entete .= "MIME-Version: 1.0\n";
$entete .= "Content-Type: multipart/alternative;\n"; 
$entete .= " boundary=\"----=$limite\"\n\n";

//Le message en texte simple pour les navigateurs qui
//n'acceptent pas le HTML
$texte_simple = "This is a multi-part message in MIME format.\n";
$texte_simple .= "Ceci est un message est au format MIME.\n";
$texte_simple .= "------=$limite\n";
//$texte_simple .= "Content-Type: text/plain; charset=\"US-ASCII\"\n";
$texte_simple .= "Content-Transfer-Encoding: 8bit\n\n";
$texte_simple .= $messtxt;
$texte_simple .= "\n\n";

//le message en html original
$texte_html = "------=$limite\n";
//$texte_html .= "Content-Type: text/html; charset=\"US-ASCII\"\n";
$texte_html .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$texte_html .= "Content-Transfer-Encoding: 8bit\n\n";
$texte_html .= "<html>\n<head>\n</head>\n<body>\n<style type=\"text/css\">BODY{FONT: 10pt Tahoma;}A{COLOR: #3360C5;TEXT-DECORATION: none;}A:HOVER{COLOR: darkorange;TEXT-DECORATION: underline;}</style>\n";
$texte_html .= $messhtml;
$texte_html .= "</body>\n</html>\n";
$texte_html .= "\n\n\n------=$limite--\n";

return mail($destinataire, $sujet, $texte_simple.$texte_html, $entete);
}

Lien vers le commentaire
Partager sur d’autres sites

Argh, je viens de trouver. Voici le code de la fonction corrigé :

(La différence se trouve dans la partie $texte_html, avec des "\n" en moins)

function mail_html($destinataire, $sujet , $messtxt, $messhtml , $from)
{
$limite = "_parties_".md5 (uniqid (rand()));

$entete = "Reply-to: $from\n";
$entete .= "From:$from\n";
$entete .= "X-Sender: <www.monsite.fr>\n";
$entete .= "X-Mailer: PHP\n";
$entete .= "X-auth-smtp-user: contact@monsitefr \n";
$entete .= "X-abuse-contact: webmaster@monsite.fr \n";
$entete .= "Date: ".date("D, j M Y G:i:s O")."\n";
$entete .= "MIME-Version: 1.0\n";
$entete .= "Content-Type: multipart/alternative;\n"; 
$entete .= " boundary=\"----=$limite\"\n\n";

//Le message en texte simple pour les navigateurs qui
//n'acceptent pas le HTML
$texte_simple = "This is a multi-part message in MIME format.\n";
$texte_simple .= "Ceci est un message est au format MIME.\n";
$texte_simple .= "------=$limite\n";
$texte_simple .= "Content-Type: text/plain\n charset=\"US-ASCII\"\n";
$texte_simple .= "Content-Transfer-Encoding: 8bit\n\n";
$texte_simple .= $messtxt;
$texte_simple .= "\n\n";

//le message en html original
$texte_html = "------=$limite\n";
//$texte_html .= "Content-Type: text/html; charset=\"US-ASCII\"\n";
$texte_html .= "Content-Type: text/html; charset=\"iso-8859-1\"; ";
$texte_html .= "Content-Transfer-Encoding: 8bit\n\n";
$texte_html .= "<html>\n<head>\n</head>\n<body>\n<style type=\"text/css\">BODY{FONT: 10pt Tahoma;}A{COLOR: #3360C5;TEXT-DECORATION: none;}A:HOVER{COLOR: darkorange;TEXT-DECORATION: underline;}</style>\n";
$texte_html .= $messhtml;
$texte_html .= "</body>\n</html>\n";
$texte_html .= "\n\n\n------=$limite--\n";

return mail($destinataire, $sujet, $texte_simple.$texte_html, $entete);
}

Edit : enlevage du nom du site (désolé, j'ai oublié le coup là).

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...