Sign in to follow this  
Followers 0

Appel aux pros du PHP

22 posts in this topic

Posted · Report post

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

Share this post


: post
Share on other sites

Posted · Report post

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

Share this post


: post
Share on other sites

Posted · Report post

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.

Share this post


: post
Share on other sites

Posted · Report post

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

Share this post


: post
Share on other sites

Posted · Report post

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 :)

Share this post


: post
Share on other sites

Posted · Report post

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

Willy

Share this post


: post
Share on other sites

Posted · Report post

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 :)

Share this post


: post
Share on other sites

Posted · Report post

Montre nous ce que tu as fait.

Willy

Share this post


: post
Share on other sites

Posted · Report post

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...

Share this post


: post
Share on other sites

Posted · Report post

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

Sinon il faut tenter avec Bcc.

Sinon mettre 2 destinataires...

Willy

Share this post


: post
Share on other sites

Posted · Report post

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 ?

Share this post


: post
Share on other sites

Posted · Report post

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

Share this post


: post
Share on other sites

Posted · Report post

\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

Share this post


: post
Share on other sites

Posted · Report post

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)

Share this post


: post
Share on other sites

Posted · Report post

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

Willy

Share this post


: post
Share on other sites

Posted · Report post

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

Share this post


: post
Share on other sites

Posted · Report post

Lol

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

Merci en tout cas

Share this post


: post
Share on other sites

Posted · Report post

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

Share this post


: post
Share on other sites

Posted · Report post

Hmmm ça se complique :)

Mais je peux tenter ...

Share this post


: post
Share on other sites

Posted · Report post

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

Share this post


: post
Share on other sites

Posted · Report post

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 :)

Share this post


: post
Share on other sites

Posted · Report post

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.

Share this post


: post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

Twitter Advisto ecommerce

Facebook PEEL Shopping