Appel aux pros du PHP

22 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

J'ai voulu modifier la fonction qui envoit le mail de confirmation de commande à mes clients, afin de me mettre en copie de ce mail (pour vérifier qu'il est correctement envoyé).

La fonction initiale était :

mail($com->email,$email_subject,$email_object,"From:$support");

Je l'ai remplacé afin de modifier l'entête pour préciser un destinataire en copie.

J'ai donc utilisé une nouvelle variable $entetes pour cela :

$entetes = "From: $support\n\r" ;
$entetes .= "CC: $support" ;
mail($com->email,$email_subject,$email_object, $entetes) ;[/codebox]

Le résultat n'est pas vraiment celui que j'attendais :)

1) Le mail ne m'arrive pas en copie

2) La première ligne de texte (objet) que reçoit le client est CC: info@monsite.com (valeur de la variable $support).

Pour modifier cette fonction je me suis inspiré de tutos trouvés sur le net. Je ne vois pas ce qui cloche. Les experts auraient-ils une idée ?

Merci d'avance.

Sam

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

En fait il suffit d'appeler 2 fois la fonction:

mail($com->email,$email_subject,$email_object,"From:$support");

mail("ton_mail@mail.com",$email_subject,$email_object,"From:$support");

Et tu mets ton mail à la place de "ton_mail@mail.com".

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

J'aurais parié sur une réponse de Willy lol :)

Effectivement, c'est une solution de contournement à laquelle j'avais pensé, mais juste pour ma culture, j'aimerais tout de même bien comprendre l'envoi d'un mail avec destinataire en copie ...

Et cela me permettrait en outre de faire un "répondre à tous" pour communiquer avec mes clients par la suite.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Un exemple:

<?php

	 // Plusieurs destinataires

	 $to  = 'aidan@example.com' . ', '; // notez la virgule

	 $to .= 'wez@example.com';


	 // Sujet

	 $subject = 'Calendrier des anniversaires pour Août';


	 // message

	 $message = '

	 <html>

	  <head>

	   <title>Calendrier des anniversaires pour Août</title>

	  </head>

	  <body>

	   <p>Voici les anniversaires à venir au mois d\'Août !</p>

	   <table>

		<tr>

		 <th>Personne</th><th>Jour</th><th>Mois</th><th>Année</th>

		</tr>

		<tr>

		 <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>

		</tr>

		<tr>

		 <td>Sally</td><td>17th</td><td>August</td><td>1973</td>

		</tr>

	   </table>

	  </body>

	 </html>

	 ';


	 // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini

	 $headers  = 'MIME-Version: 1.0' . "\r\n";

	 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";


	 // En-têtes additionnels

	 $headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";

	 $headers .= 'From: Anniversaire <anniversaire@example.com>' . "\r\n";

	 $headers .= 'Cc: anniversaire_archive@example.com' . "\r\n";

	 $headers .= 'Bcc: anniversaire_verif@example.com' . "\r\n";


	 // Envoi

	 mail($to, $subject, $message, $headers);

?>

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Effectivement la syntaxe de définition des headers est un peu différente de celle que j'ai mis.

En particulier, il y a un . en plus et des " ou ' alors que moi j'ai tout dans un seul bloc.

Je vais essayer cela.

Merci Will :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

En cas de soucis sur PHP, un conseil: http://www.php.net

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Non vraiment... quelque soit la syntaxe que j'utilise, le header cc n'est pas pris en compte comme un cc, mais comme un élément de corps de message :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Montre nous ce que tu as fait.

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Et bien j'ai juste remplacé la ligne qui permet l'envoi du mail au client :

mail($com->email,$email_subject,$email_object,"From:$support");

Par :

$entetes = "From: $support\n\r" ;

$entetes .= "CC: $support\n\r" ;

mail($com->email,$email_subject,$email_object, $entetes) ;

Qui devrait juste mettre le destinataire $support en copie.

Donc rien de bien méchant...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

C'est \r\n et non l'inverse et Cc et pas CC.

Sinon il faut tenter avec Bcc.

Sinon mettre 2 destinataires...

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Ok je vais essayer le \r\n.

Pour le CC, Cc ou Bcc, j'ai déjà essayé ces différentes combinaisons, et dans les tuto du net, je trouve d'ailleurs également différents exemples. Il semble que la casse n'ait pas d'importance sur ce label.

Par contre, là je suis un peu bêta, j'ai cru comprendre que le \r\n permettait de séparer les 2 attributs de la variable $entetes, mais que je n'arrive pas à comprendre ce que signifient exactement \r et \n ? A quelle instruction cela correspond-il ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

jne m'incrute pour dire qu'il faudrait utiliser une classe

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

\r\n est équivalent à Cariage return je crois ou retour chariot en francais (touche Entrée :) ).

Mais apparement il y a un bug avec le Cc...

Dis nous si ca marche ou pas.

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Alors, tout d'abord merci Willy car il s'agissait bien de l'inversion du \n et du \r.

Ca marche parfaitement maintenant.

Je suis triste car j'étais fier de mon développement. Depuis que j'utilise Peel, j'ai appris une tonne de choses en php et je commence tout doucement à y voir assez clair dans le code, mais je reste encore fort fragile au niveau syntaxe. En particulier, je m'embrouille beaucoup au niveau des variables et des libellés. On toruve des print, des echos, une fois il y a des " " , une fois il n'y en a pas. Parfois je mets des lignes en commentaires par // ou /* dans le code, et au lieu de mettre les lignes en commentaire, ça s'affiche dans ma page web, parfois on appelle une fonction directement, parfois on met un . devant... bref, la syntaxe est globalement encore un peu confuse pour moi. En revanche, la logique de programmation commence à être claire.

Tout ça pour dire que j'aurais bien aimé réussir à trouver tout seul ce coup-ci.

Mais à ma décharge, je me suis inspiré de ce site : http://www.xrings.net/xrings/article.php3?id_article=337 qui avait inversé les \n et \r. Alors si les tutos se trompent... moi je suis perdu <_<

Bref encore une fois de plus, un grand merci à Will de s'être penché sur mon code.

Actuellement, je suis en train de mettre en place du code pour faire en sorte que dans le mail reçu par le client, si le règlement est par chèque, on trouve un texte demandant d'envoyer le chèque à l'adresse : FSC, adresse, ville, pays.

Bien sûr, je ne veux pas écrire simplement l'adresse en dur dnas une variable sinon ça n'a pas d'intérêt et ça n'est pas propre. Du coup j'ai créé une nouvelle fonction (et oui, avec mes petites mains) qui construit une variable... bref, j'ai bien bossé :)

Pour le moment, je n'ai pas testé car c'est en local sur mon environnement de dev qui n'a pas d'envoi de mail. Je fais mettre en production prochainement pour tester et si ça marche, je publierai mon code (ben oui, même si ça parait trois fois rien, je suis fier moi :P ).

Bon à part ça, Paulanna, que veux tu dire par utiliser une classe ? Ca m'intéresse (toujours pour ma culture...)

Merci à vous 2 (K)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Pas de soucis, c'est nikel si tu commences a comprendre et à developper n'hésite pas en cas de soucis.

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

une classe est une liste de fonction qui est normalement écrite pour répondre à tous les cas de figures et rendre l'utilisation plus simple de son contenu.

donc c'est pour cela que tu devrais trouver une classe mail php sur le net et t'en servir pour réaliser tes copies de mail par exemple, de plus tu pourras également envoyer le tout en piece jointe si tu le désire.

voila voila, pour la mise en oeuvre willy se fera un plaisir de t'aider, suis sur

bon codes Sam59

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Lol

Et une bombe pour Willy, une !!!! :)

Merci en tout cas

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

voila voila, pour la mise en oeuvre willy se fera un plaisir de t'aider, suis sur

je te laisse cet honneur <_<

Tu as proposé, je te laisse expliqué et mettre en oeuvre :)

Sinon tu peux mettre un lien vers ta facture (dynamiquement par rapport à l'id de la facture) dans ton mail sans soucis.

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Hmmm ça se complique :)

Mais je peux tenter ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Regarde comment tu créés la facture dans le back office et fait pareil et donne le lien au client dans le corps du message.

Bon code :)

Willy

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Depuis que j'utilise Peel, j'ai appris une tonne de choses en php et je commence tout doucement à y voir assez clair dans le code, mais je reste encore fort fragile

Vas y néo, tu commences a comprendre la matrice <_<

Je sors :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Ce soir je fais une mise en production mineure de mon site afin de tester mon mail de confirmation, et de mettre en production quelques modif que j'ai faites sur le design des pages qui s'enchainent dans le processus de commande.

Si tout fonctionne bien, je m'atttaquerai à la mise en place du lien vers la facture.

Si tu es curieux Willy, voici le lien vers mon site (que j'écris en codé suivant les recommandations d'Eric-lavoisier, pour ne pas perturber mon référencement...).

h-ttp://www. freestyle-creation . com

Voilou.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping