Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/08/2011, 20h42   #1
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
Par défaut lien dans mail en PHP

Bonjour,

j'ai un problème que je n'arrive pas à résoudre seul et c'est pour ça que je me tourne vers vous.

Je vous expose la situation et là où je butte.

J'ai fait un script qui me permet que lorsque je publie une news sur mon site, de générer automatiquement un mail puis de l'envoyer vers un google groups où il est redirigé vers tous les adhérents d'une association sportive, ainsi dès qu'une news est publiée sur le site, un maximum de personnes est informé.

Mon seul problème est que si j’envoie des liens, le client de messagerie (Windows Live Mail dans mon cas) ne les interprète pas => pas de lien hypertexte.

Voici le code qui envoi le mail :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
 
<?php $message_mail = stripslashes(nl2br(htmlspecialchars(strip_tags($_POST['contenu']))));	   
	    //----------------------------------------
		//--------Envoi de l'email----------------
		//----------------------------------------
 
		$destinataire = "cnmarignanais_test@googlegroups.com";
		$boundary = md5(uniqid(rand()));
 
		//on joint le premier fichier
		$fichier1 = "design/images/entete_email.png";
        $fp1      = fopen($fichier1, "rb");
        $fichierattache1 = fread($fp1, filesize($fichier1));
        fclose($fp1);
        $fichierattache1 = chunk_split(base64_encode($fichierattache1));
 
		//on joint le deuxième fichier
		$fichier2 = "design/images/bas_email.png";
        $fp2      = fopen($fichier2, "rb");
        $fichierattache2 = fread($fp2, filesize($fichier2));
        fclose($fp2);
        $fichierattache2 = chunk_split(base64_encode($fichierattache2));		
 
		$header = "";
		$header .= "From: Club Nautique Marignanais <bureau@cnmarignanais.fr>\n";
		$header .='Reply-To: bureau@cnmarignanais.fr'."\n"; 
		$header .= "MIME-Version: 1.0\n";
		$header .= "Content-Type: multipart/alternative; boundary = $boundary\n";
 
		//première image
		$message .= "\n--$boundary\r\n";
        $message .= "Content-Type: application/octet-stream; name=\"$fichier1\"\r\n";
        $message .= "Content-Transfer-Encoding: base64\r\n";
        $message .= "Content-ID: <entete_email.png>\r\n";
        $message .= "\r\n";
        $message .= $fichierattache1 . "\r\n";
        $message .= "\r\n\r\n";		
		$message .= "<img src=\"cid: entete_email.png\" /><br /><br />\n\n"; //image du haut
 
		//corps
	    $message .= "\n--$boundary\nContent-Type: text/html; charset = \"iso-8859-1\"\n\n";
	    $message .= "<html><body style=\"color:#006995;\">\n";
		$message .= "<img src=\"cid: entete_email.png\" /><br /><br />\n\n"; //image du haut		
		$message .= "".$message_mail."<br/><br/>\n";		
		$message .= "<small><em>Ceci est un message automatique, merci de ne pas y répondre ! <br/> Il se peut qu'il y est des problemes d'affichage avec certaines messageries.</em></small><br/<br/><br/>\n";		
		$message .= "<img src=\"cid: bas_email.png\" /><br /><br />\n\n"; //image du bas
	    $message .= "</body></html>\n";
 
		//deuxième image
		$message .= "\n--$boundary\r\n";
        $message .= "Content-Type: application/octet-stream; name=\"$fichier2\"\r\n";
        $message .= "Content-Transfer-Encoding: base64\r\n";
        $message .= "Content-ID: <bas_email.png>\r\n";
        $message .= "\r\n";
        $message .= $fichierattache2 . "\r\n";
        $message .= "\r\n\r\n";		
		$message .= "<img src=\"cid: bas_email.png\" /><br /><br />\n\n"; //image du bas
 
        $message .= "\n--$boundary--\n end of the multi-part";
 
		$titre_mail = "[CNM NEWS] ".$titre;
 
      if(mail($destinataire, $titre_mail, $message, $header) == true)
         {
           echo '<span style="color: green;"> Email => OK</span><br>'; 
		 } ?>
Je pense que cela vient de la manière dont j'ai codé mais existe-il une ruse pour que ca puisse marcher ?

Pour information, j'ai essayé de mettre avec les balises <a></a>, sans ces balises, en permettant les balises <a></a> dans la fonction strip_tags($_POST['contenu']), comme ceci


Code :
<?php strip_tags($_POST['contenu'], '<a>') ?>

mais rien n'y a fait.


J'attends vos conseils avec impatience.
Cordialement
Twiners 13
twiners13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2011, 22h10   #2
Membre chevronné
 
Inscription : janvier 2006
Messages : 446
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 446
Points : 637
Points : 637
Bonjour,

Si les autres balises HTML utilisées dans le mail "fonctionnent", est-ce que ce ne serait pas le client de messagerie qui purge le mail de tous les liens ? (avec toutes les protections, de nos jours...)

Sinon, je ne m'y connais pas dans la génération manuelle d'entête donc je vous laisse ici
goomazio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2011, 22h14   #3
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
en fait, le lien hypertexte que je veux afficher se trouve dans la variable $message_mail mais ce qu'il y a c'est que le logiciel de messagerie n'arrive pas à interpréter et ne me le met pas en lien hypertexte
twiners13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2011, 22h23   #4
Membre chevronné
 
Inscription : janvier 2006
Messages : 446
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 446
Points : 637
Points : 637
Citation:
le logiciel de messagerie n'arrive pas à interpréter et ne me le met pas en lien hypertexte
Est-ce que le client affiche rien du tout, tout le code html qu'il ne comprend pas, ou bien il affiche juste le titre du lien (mais sans lien...) ?


Vous avez essayé avec un lien le plus simple possible (<a href="http://moodle.org/">Pas de pub</a>) ? (vus les limitations des clients mails au niveau de l'interprétation du HTML).


En espérant pouvoir vous aider
goomazio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2011, 22h35   #5
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
J'ai essayé avec des liens très simples comme google par exemple

voici les tests et les résultats que j'ai obtenus avec par exemple <a href="google.fr">Google</a> :

- avec strip_tags : Google
- avec strip_tags mais permission de la balise <a> : <a href="google.fr>Google</a>
- en mettant seulement google.fr : google.fr


la chose que je suis en tain de me demander est : est ce que c'est possible que ça marche comme j'ai codé moi alors si je suis loin ou pas ?

les deux lignes de code primordiales sont celles ci :

Code :
1
2
3
4
 
<?php $message_mail = stripslashes(nl2br(htmlspecialchars(strip_tags($_POST['contenu']))));
 
$message .= "".$message_mail."<br/><br/>\n"; ?>
est ce qu'avec ça ça peut marcher ?
twiners13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2011, 22h44   #6
Membre chevronné
 
Inscription : janvier 2006
Messages : 446
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 446
Points : 637
Points : 637
Citation:
est ce qu'avec ça ça peut marcher ?
Aucune idée.

A part ça, si on est d'accord pour conclure, de votre dernière réponse, que c'est bien la complexité du lien qui pose problème. Il convient, je pense, de regarder dans les spécifications du clients mails (sur la msdn ?) quels balises et attributs HTML sont autorisés.


Cordialement
goomazio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2011, 23h07   #7
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 4
Points : 0
Points : 0
désolé pour l'attente :

$message_mail renvoit:

- <a href="http://www.google.fr/">Google</a>
avec strip_tags et permission de <a>

- Google avec strip_tags


$_POST['contenu'] renvoit lui Google avec lien hypertexte


tous ces résultats s'affichent dans Firefox, pas dans le client de messagerie bien entendu
twiners13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h33.


 
 
 
 
Partenaires

Hébergement Web