D'accord. Mais qu'est ce que tu entends par désechappement et échappement ? :oops:
Version imprimable
D'accord. Mais qu'est ce que tu entends par désechappement et échappement ? :oops:
Code:
1
2 encodeURIComponent() urldecode()
Tu penses qu'il faudrait que dans mon script PHP j'utilise le urldecode() ??
Code:
1
2
3
4 $mail->$_POST['Body']; // Permet d'exploiter le contenu de ma variable Body // que j'ai récupéré par la méthode POST urldecode($mail);
Voilà j'ai fais comme ça je pense que c'est ce que tu m'indiquais
ben si tu as utilisé encodeURIComponent coté js ... il vaudrait mieux !
mais pourquoi ne pas commencer par un simple test avec un simple echo de ta variable passée ??
Côté JS j'ai fais ça
Et côté php çaCode:
1
2
3
4
5
6
7 function transfertParamAuPHP() { document.getElementById('Email').value = tabEmail.join(','); // permet de prendre en cmpte les caractères spéciaux document.getElementById('Body').value = encodeURIComponent(bodyCorps); // alert(document.getElementById('Email').value); }
Mais je reçoit cette erreur:" urldecode() expects parameter 1 to be string, object given in"Code:
1
2
3
4 $mail->$_POST['Body']; // Permet d'exploiter le contenu de ma variable Body // que j'ai récupéré par la méthode POST urldecode($mail);
Code:echo urldecode($_POST['Body']);
Oui j'ai corrigé ^^..merci pour le temps que tu prends à me répondre. Je pense que mon problème vient du chemin que j'indique à mes images car tout se passe bien dans la construction de mon mail (objet, destinataires, etc) sauf le contenu c.a.d les images de fonds les titres, les couleurs. Je vais chercher jspr trouver à force.
Juste une dernière chose space frog tu pourras peut être me faire comprendre exactement ce que sont les attributs de cette fonction
Pour moi $path correspond au chemin où l'on trouve l'imageCode:
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 /** * Adds an embedded attachment. This can include images, sounds, and * just about any other document. Make sure to set the $type to an * image type. For JPEG images use "image/jpeg" and for GIF images * use "image/gif". * @param string $path Path to the attachment. * @param string $cid Content ID of the attachment. Use this to identify * the Id for accessing the image in an HTML form. * @param string $name Overrides the attachment name. * @param string $encoding File encoding (see $Encoding). * @param string $type File extension (MIME) type. * @return bool */ function AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64", $type = "application/octet-stream") { if(!@is_file($path)) { $this->SetError($this->Lang("file_access") . $path); return false; } $filename = basename($path); if($name == "") $name = $filename; // Append to $attachment array $cur = count($this->attachment); $this->attachment[$cur][0] = $path; $this->attachment[$cur][1] = $filename; $this->attachment[$cur][2] = $name; $this->attachment[$cur][3] = $encoding; $this->attachment[$cur][4] = $type; $this->attachment[$cur][5] = false; // isStringAttachment $this->attachment[$cur][6] = "inline"; $this->attachment[$cur][7] = $cid; return true; }
$cid je ne comprends pas
et $name je le prends comme un nom pour identifier l'image
qu'en pense tu ?
heu les images sont ou ? en local ou hebergées ?
Il faut lire les réponses qu'on te donnent, je t'avais répondu a ta question au début.
Pour envoyer un email avec des images, tu as deux possibilité ou écrire l'adresse directe de l'image hebergé sur ton site genre http://www.example.com/img/2u_cs_mini.jpg
ou bien l'integrer avec ton email comme ceci :
J'ai utilisé la classe phpmailer. Y'a un un bon tutorial sur ce meme site.Code:$mail->AddEmbeddedImage('img/ENTETE.gif','ENTETE.gif');
J'ai supposé que tes images se trouve dans le repertoire "img"
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 <? require "phpmailer2/class.phpmailer.php"; $mail = new PHPmailer(); $mail->IsHTML(true); $mail->From='tonemail@courrier.fr'; $mail->AddAddress('varsemail@courrier.fr'); $mail->AddReplyTo('tonemail@courrier.fr'); $mail->Subject='Envoi email'; $mail->AddEmbeddedImage('img/ENTETE.gif','ENTETE.gif'); $mail->AddEmbeddedImage('img/BORDURE_haut.gif','BORDURE_haut.gif'); $mail->AddEmbeddedImage('img/BORDURE_bas.gif','BORDURE_bas.gif'); $mail->AddEmbeddedImage('img/FOND_1px.gif','FOND_1px.gif'); $mail->AddEmbeddedImage('img/LOGO_AIRBUS.gif','LOGO_AIRBUS.gif'); $mail->CharSet="iso-8859-1"; // $mail->Body=$_POST['body_html']; si tu veux recuperer ton body_html a travers un formulaire $mail->Body='<HTML><HEAD><TITLE>NewsLetter</TITLE><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />'. '<style type="text/css">'. '*{padding: 0px;margin:0px;}hr{ visibility: hidden;}.image{ background: transparent url(\'cid:ENTETE.gif\') no-repeat top center;height:200px;padding-right:8px;padding-top: 90px;}'. '.bordureDuHaut{background: transparent url(\'cid:BORDURE_haut.gif\') no-repeat top;height:6px;}.fond{background: transparent url(\'cid:FOND_1px.gif\') top;height:569px;font-family:calibri,cambria,arial,candara;color :#000099;}'. 'p{text-align: center;}#texte{padding-left:20px;font-size:130%;}#texteScrollable{position: relative ;width:800 ;height:569;overflow :auto ;font-size: 10pt;}'. '.bordureDuBas{background: transparent url(\'cid:BORDURE_bas.gif\') no-repeat top;height:6px;}.finDuFond{background: transparent url(\'cid:FOND_1px.gif\') top;height:6px;}'. '#bouton_send{text-align: center;width:100%;}.logoAirbus{float:right;width:100px;background:white url(\'cid:LOGO_AIRBUS.gif\') no-repeat;height: 24px;}'. '</style></HEAD><BODY><div class="image"><div align="bottom" class="logoAirbus" ></div></div><div class="fond" id="texteScrollable"><div class="bordureDuHaut">'. '</div> <div id="texte"><p><b>Dear all,</b></p>'. '</div></div><form method=post action="test.php"><div class="finDuFond"><div class="bordureDuBas"></div></div></form></BODY></HTML>'; if(!$mail->Send()){ echo $mail->ErrorInfo; } else{ echo 'Mail envoyé avec succès'; } unset($mail); ?>
Elles sont en local car je peux pas les héberger. Si je les héberge en fait il peut y avoir une migration des infos de celui-ci n'importe quand (bref un petit problème lié à mon sujet). Donc la solution d'héberger m'est impossible
Si ton script php n'est pas en local, comment veut-tu qu'il puisse acceder a tes images?
Beh tout est en local, les images sont dans le même fichier que mon script PHP et de mon fichier JS.
J'avais vu ta réponse ne t'inquiète pas c'est juste que quand j'ai voulu utiliser ta technique j'ai tout fais bugué pour ça que je suis revenu à mon ancienne version
Donc tu es en local, et tu as un serveur de messagerie, et tu arrive a envoyer des email mais ils sont vide, c'est ca?
Comme tu es en phase de test, je te conseille d'activer l'affichage des erreurs, comme ca tu sais ou sa cloche.
Faudra aussi specifier ton hote smtpCode:error_reporting(E_ALL);
Tu peux utiliser AddEmbeddedImage comme ceciCode:
1
2
3
4
5
6 $mail->IsHTML(true); $mail->Host='hote_smtp'; .... .... $mail->SmtpClose(); unset($mail);
l'image se trouve dans le repertoire imgCode:$mail->AddEmbeddedImage('img/ENTETE.gif','ENTETE.gif');
et dans to code HTML tu fait reference a cette image comme ceci
Code:'cid:ENTETE.gif'
D'accord, par contre tout ce que tu m'as dis c'est déjà comme ça hormis que mes images sont dans le même fichier que mon script PHP et non dans un dossier différent img. Je te mets mon code PHP tu comprendras peut être mieux
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91 include("Class_phpmailer.php"); if (isset($_POST['Email'])) { $tabStringExplode = explode(',',$_POST['Email']); //echo '<p>'.print_r ($_POST['Email'],true).'</p>'; } else { echo 'Aucun mail n\'a été récupéré'; } // Crée un objet PHPmailer $mail = new PHPmailer(); // Fonction qui permet l'envoit de message via le serveur SMTP $mail->IsSMTP(); $mail->SMTPDebug = 2; $mail->IsHTML(true); // Spécifie l'hôte (ou les hôtes)SMTP auquel il faut se connecter $mail->Host='FR0-mailsmtp'; // Spécifie la provenance de la newsletter $mail->FromName='ADMINISTRATION, Techdata'; // Spécifie l'adresse de l'expéditeur $mail->From='techdata.administration@'; // Définit le sujet du mail $mail->Subject='Newsletter AirN@v & Technical Manuals '; // Pièce jointes qui permettent de structurer la newsletter $mail->AddEmbeddedImage('http://techpub.eu.airbus.corp/techpub1/PROJET_ABONNEMENT/AirNavOneLink2/Newsletter/_private/news_updates/ENTETE.gif', 'ENTETE.gif', 'ENTETE.gif'); $mail->AddEmbeddedImage('http://techpub.eu.airbus.corp/techpub1/PROJET_ABONNEMENT/AirNavOneLink2/Newsletter/_private/news_updates/BORDURE_haut.gif', 'BORDURE_haut.gif', 'BORDURE_haut.gif'); $mail->AddEmbeddedImage('http://techpub.eu.airbus.corp/techpub1/PROJET_ABONNEMENT/AirNavOneLink2/Newsletter/_private/news_updates/FOND_1px.gif', 'FOND_1px.gif', 'FOND_1px.gif'); $mail->AddEmbeddedImage('http://techpub.eu.airbus.corp/techpub1/PROJET_ABONNEMENT/AirNavOneLink2/Newsletter/_private/news_updates/BORDURE_bas.gif', 'BORDURE_bas.gif', 'BORDURE_bas.gif'); $mail->AddEmbeddedImage('http://techpub.eu.airbus.corp/techpub1/PROJET_ABONNEMENT/AirNavOneLink2/Newsletter/_private/news_updates/LOGO_AIRBUS.gif', 'LOGO_AIRBUS.gif', 'LOGO_AIRBUS.gif'); // Récupère le contenu du body contenu dans le form de popup.asp $mail->$_POST['Body']; // Permet d'exploiter le contenu de ma variable Body // que j'ai récupéré par la méthode POST urldecode($_POST['Body']); // Retourne le nombre de mail à envoyer $count = count($tabStringExplode); // Définit un compteurmin afin d'éviter de repartir à 0 // lorsqu'il y a découpe en paque de compteurMax $compteurMin = 0; // Boucle tant que $tabStringExplode contient des éléments while($count > 0) { if($count > 3) { // Si le nombre d'éléments à transmettre est supérieur à 50 // on découpe celui-ci en paquet de 50 pour éviter une surcharge lors de l'envoi $compteurMax = 3; } else { // CompteurMax est égal au nombre d'adresse mail contenu dans $tabStringExplode $compteurMax = $count; } for($i = $compteurMin ; $i < $compteurMax ; $i++) { echo '<br/>'.$tabStringExplode[$i]; $mail->AddAddress($tabStringExplode[$i]); } $compteurMin = $compteurMax + 1; // La variable $var récupère le résultat de la fonction Send() $var = $mail->Send(); if($var) { // Pas d'erreur le programme continue à boucler $count = count($tabStringExplode); // Supprime toutes les adresses affectées au tableau $mail $mail->ClearAddresses(); } else { echo '<p>'.$mail->ErrorInfo.'</p>'; echo 'valeur de count est '.$count; // Erreur rencontré le programme se stoppe $count = 0; } } // Test sur l'état de la variable if($var) { echo '<script type="text/javascript">alert(\'La newsletter a bien été envoyé\');</script>'; } else { echo '<script type="text/javascript">alert(\'Problème rencontré dans lenvoi de la newsletter\');</script>'; } // Coupe la connexion avec le serveur SMTP $mail->SmtpClose(); // Script javascript permettant de fermer la fenêtre //echo '<script type="text/javascript">setTimeout("window.close()", 1000);</script>'; ?>
Que fait tu dans la ligne 33????
ca devrais pas etreCode:$mail->$_POST['Body'];
Tes images ne sont pas en local, ils sont hebergées.Code:$mail->Body=$_POST['Body'];
Au lieu d'envoyer tout le body par URL, envoi juste les variables qui changent dans ton texte, a la limite fait un fichier modele HTML, c'est beaucoup plus facile a entretenir.
Dans cette ligne, dans quelle variable tu recupere le resultat de la fonction???
Code:urldecode($_POST['Body']);
Merci fab en fait j'avais mal lu un de tes codes, j'arrive à afficher une partie du mail, toujour un problème d'image mais il y a du mieux. Je n'arrive toujours pas à exploiter l'ensemble de am newsletter, il manque du texte
J'ai récupérer ton code HTML et je l'ai mis en forme dans un post précédent parce que comme tu l'a écris ca sera trés difficile de trouver l'erreur (CSS+HTML).
Peut-tu résumer un peu le fonctionnement de ton news letter, l'utilisateur saisie une liste des emails et du code HTML+CSS dans un form ensuite le script PHP envoi ce code HTML+CSS vers la liste de diffusion par paquets???
Qu'est-ce que tu attends en sortie exactement dans le texte de l'email????
Pour les images tu enleve img si les images se trouve dans le meme repertoire que ton script PHP mais dansle code que tu as donné ils sont hebergé et non en local. Tu peux utiliser la syntaxe que je t'ai donné puisque tu ne change pas de nom de l'image, pas la peine de saisir tout les parametres.
Tu as très bien résumé le fonctionnement. En plus de saisir, l'utiliasteur peut prévisualiser sa newsletter avant de l'envoyer (c'est là qu'intervient le code HTML/CSS) et c'est ce que je veux récupérer. LA structure HTML et le contenu c.a.d le texte qu'il aura tappé
Et si le code HTML saisie par l'utilisateur était éronné? tu fait quoi? Tu doit le valider avant de l'envoyer par mail.
Pour la visualisation du code HTML+CSS, peut etre un IFRAME avec innerHTML
genre en javascriptCode:window["nom_iframe"].document.body.innerHTML=document.getElementById('Body_HTML').value;