Page 1 sur 2

Problème d'envoie mail

Posté : 13 mars 2008, 18:44
par romain35
Bonsoir,

J'ai juste un petit problème qu'en une personne inscrit un site en tant que sponsor il ne reçoi pas le mail mes c'est moi qui le reçoi :

Voici le code ou je bloque:
	
<?
        $recipient = $result["email"] . "<" . $result["email"] . ">";
	$recipient1 = "email@nomdedomaine";
        $subject = "";
        
        $content  = "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "Identifiant : ".$DATAS."\n";
	$content .= "Code Allopass : ".$RECALL."\n";
	$content .= "\n";
	$content .= "Vous serez Sponsor jusqu'au : ".date('d/m/Y', $date_fin)."\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "\n";
	$content .= "...........................................\n\n";
	$content .= "E-mail automatique\n";
	$content .= "(Ne pas répondre a ce message)\n";

	$headers  = "From: email@nomdedomaine<email@nomdedomaine>\n";
	$headers .= "X-Sender: <email@nomdedomaine>\n";
	$headers .= "Return-Path: <email@nomdedomaine>\n";
	$headers .= "Error-To: <email@nomdedomaine>\n";
	$headers .= "X-Mailer: PHP\n";

	mail($recipient, $subject, $content, $headers);
	mail($recipient1, $subject, $content, $headers);
?>
Qu'en je mes mon adresse email personne dans la case $ recipient1 = ""; il y a que moi qui reçois le mail alors que normalement ça doit êtres à la personne de la recevoir en tant que inscrit avec toute les données.

Je vous en remercie d'avance

Cordialement
romain
++

Posté : 13 mars 2008, 19:45
par Cyrano
Jette donc un coup d'œil dans la doc sur la fonction mail et sur les exemples de code. Tu verras comment envoyer à un destinataire principal et ajouter des copies cachées (Bcc) ou non(Cc) à d'autres destinataires.

Posté : 13 mars 2008, 20:24
par romain35
c'est bien ce que j'ai fait !

Cordialement
romain
++

Posté : 13 mars 2008, 20:27
par Cyrano
Alors tu n'as pas du bien regarder puisque tu fais deux expéditions séparées au lieu d'une seule pour les deux destinataires...

Posté : 13 mars 2008, 20:44
par romain35
Désolé mes la je ne comprend plus je sèche !

Cordialement
romain
++

Posté : 13 mars 2008, 21:23
par dunbar
Salut,
Ce que cyrano veux dire est de supprimer une des lignes suivante ;
mail($recipient, $subject, $content, $headers); 
mail($recipient1, $subject, $content, $headers); 
et ajouter une copie ou copie caché, un truc du genre.
$headers .='Bcc:'.$mailCache."\n";                               //----> Copie caché <-----//
$headers .='cc:'.$mailCopy."\n";                                 //----> Copie Mail <-----//
a+ :wink:

Posté : 13 mars 2008, 22:30
par Cyrano
En d'autres termes : la fonction mail() attend certains paramètres :
-1- Le destinataire principal;
-2- Le sujet du message;
-3- Le contenu du message;
-4- En option des en-têtes supplémentaires;
-5- En option aussi des paramètres supplémentaires.

Le point à observer, c'est le 4ième : en en-tête, tu peux par exemple envoyer ton message en plus en copie ou en copie cachée au choix. Il y a d'autres en-têtes possibles mais le point sur lequel tu bloques pour l'instant est celui-ci.

Dans la doc, regarde l'exemple n°4 en particulier les en-tête. ;)

Posté : 14 mars 2008, 01:47
par Hywan
Juste au passage, tu peux optimiser ton code de façon évidente.

Premièrement, n'utilises pas les short_tags (<?) mais plutôt sa syntaxe longue (<?php), ça évite des conflits, des problèmes de distributivité et de sécurité.

Deuxièmement, préfère utiliser les guillemets simples (') plutôt que les doubles ("). C'est plus rapide pour PHP. Un des avantages des guillemets doubles est que l'on n'a pas besoin de concaténer les variables, mais comme tu le fais, tu perds cet avantage et ne récupère que les inconvénients ... Il faut jeter un œil dans la documentation pour mieux comprendre, tu devrais y faire un tour : les chaînes de caractères (guillemets simples, doubles, et syntaxe hereDoc au programme).

Troisièmement, la concaténation est pratique, mais lourde, surtout quand on l'utilise un peu comme un cochon de sa queue ! Je m'explique : tu fais une concaténation par retour à la ligne (\n). Ne serait-il pas plus sage de tout mettre dans une seule chaîne ? Je propose :
$content = "\n\n\n\n\n" .
           'Identifiant : ' . $DATAS . "\n" .
           'Code Allopass : ' . $RECALL . "\n\n" .
           'Vous serez sponsor jusqu\'au : ' . date('d/m/Y', $date_fin) .
           "\n\n\n\n\n\n\n\n\n\n\n" .
           '-------' . "\n\n" .
           'E-mail automatique (ne pas répondre à ce message)' . "\n";
Tu gagnes en hauteur, en lisibilité, en temps, en mémoire etc. Certes, ce n'est pas la méthode la plus rapide, mais c'est déjà nettement mieux. J'en ai profité pour corriger une petite faute (« a ce message » vers « à ce message »).
Mais (et j'insiste) ce n'est pas la bonne façon de mettre en page un mail ! Déjà, c'est pas très accessible (le synthétiseur vocal va lire 25 lignes, ultra lourd) et le mail commence 5 lignes plus bas, on ne comprend pas pourquoi, moi je penserais à un bug. Pourquoi ne pas faire un petit paragraphe, un espèce de liste, et 2 lignes plus bas, le pied de mail (« E-mail automatique [...] » ? Ce serait vraiment plus simple ... Ce n'est pas un conseil technique mais ... ergonomique dira-t-on. C'est du côté de la pratique, un conseil donc :). Le fait de mettre un paragraphe peut présenter l'auteur du mail (« Bonjour, vous recevez cet email parce que vous ... »), et permet d'introduire la liste de l'identifiant, code allopass et autre truc. Mieux non ?

Posté : 14 mars 2008, 13:08
par romain35
Bonjour,

je vous en remercie beaucoup pour votre aide, votre patience.

J'ai une autre question concernant le problème d'envoi automatique au membre de mon site.

Dans la partie bah du code j'ai mis ceci:

<?php 
        $recipient = $result["email"] . "<" . $result["email"] .">";
        $recipient1 = "[email protected]";
        $subject = "Bloc-Annuaire - Confirmation de votre Sponsoring";

        $content = "\n\n\n\n\n" .
           'Identifiant : ' . $DATAS . "\n" .
           'Code Allopass : ' . $RECALL . "\n\n" .
           'Vous serez sponsor jusqu\'au : ' . date('d/m/Y', $date_fin) .
           "\n\n\n\n\n\n\n\n\n\n\n" .
           '-------' . "\n\n" .
           'E-mail automatique (ne pas répondre à ce message)' . "\n";

        $headers  = "From: [email protected]<[email protected]>\n";
	$headers .= "X-Sender: <[email protected]>\n";
	$headers .= "Return-Path: <[email protected]>\n";
	$headers .= "Error-To: <[email protected]>\n";
	$headers .= "X-Mailer: PHP\n";
	$headers .='Bcc:'.$mailCache."\n";
        $headers .='cc:'.$mailCopy."\n"; 
?>
Mes la je ne c'est pas quoi mettre dans le code à la place de Bcc et cc !

Et est ce que j'ai bon en haut du code pour l'envoie du mail automatique au membre.

Je vous en remercies d'avance pour votre aide.

Cordialement
romain
++

Posté : 14 mars 2008, 14:23
par Cyrano
Je me demande si tu as bien saisi le principe de fonctionnement quant aux destinataires de ton message.

-1- Le seul paramètre de destinataire obligatoire, c'est le premier paramètre de la fonction mail().

-2- Tu n'as aucune obligation d'envoyer une quelconque copie de ce message à d'autres destinataires, mais tu tu le souhaites, c'est possible avec les en-tête Cc et/ou Bcc. Tu choisis si tu veux envoyer cette copie en la masquant au destinataire principal ou non. Si tu ne souhaites pas la masquer, alors tu utilise l'entête Cc: adresse-autre-destinataire (Cc = Conform Copy / Copie conforme). Si au contraire tu veux envoyer une copie sans que le destinataire principal n'en soit informé, alors utilise Bcc: adresse-autre-destinataire.(Bcc = Blind Conform copy = Copie conforme cachée)

Lorsque tu envoies un message avec ton client de courrier habituel (Outlook, Thunderbird), tu peux envoyer à un ou plusieurs destinataires. Lorsque tu reçois un message, tu vois s'il a été envoyé à d'autres que toi en voyant les autres adresses auxquelles le message a été également envoyé. Mais si l'expéditeur a utilisé le Bcc, alors tu ne sauras pas que d'autres que toi ont reçu ce message. Ici, c,est exactement la même chose.

Donc si tu ne sais pas quoi mettre, pose-toi la question autrement : as-tu besoin d'envoyer une ou plusieurs copie(s) ? As-tu besoin d'envoyer d'autres en-têtes ? N'oublie pas, les quatrième et cinquième paramètres de la fonction mail() sont optionnels.

Posté : 14 mars 2008, 15:32
par romain35
En faite le code pour envoyé un mail serre pour envoyé un message de confirmation au destinataire et
sais juste pour l'envoie du mail automatique que j'ai un problème pour envoyé à la personne inscrit
avec c'est identifient etc...

Cordialement
romain
++

Posté : 14 mars 2008, 15:35
par Cyrano
Tu fait un coq-à-l'âne assez foudroyant :shock:
Au départ, tu ne sais pas quoi mettre dans les en-tête mais finalement maintenant tu n'arrives pas à envoeyr ton message... Faudrait savoir ! On va t'aider si tu y mets un tout petit peu du tiens, sinon, on s'occupera des autres et on te laissera mariner dans ta sauce :evil:

Posté : 14 mars 2008, 15:38
par romain35
Qu'en la personne s'inscrit ça fonctionne mes le message au lieux de l'envoyé au destinataire c'est moi qui reçois le message à la place.

Cordialement
romain
++

Posté : 14 mars 2008, 15:38
par Hywan
on te laissera mariner dans ta sauce :evil:
Et on te mangera :twisted:.

(attention, Cyrano a déjà tué un développeur pour moins que ça ; le type n'avait pas documenter son code, je te conseille d'être poli avec lui ;-))

Posté : 14 mars 2008, 16:57
par Cyrano
Qu'en la personne s'inscrit ça fonctionne mes le message au lieux de l'envoyé au destinataire c'est moi qui reçois le message à la place.
Fais-donc voir ton code actuel histoire qu'on comprenne un peu ce que tu fais parce que là, je sens la lassitude qui me gagne :-k