IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire avec Bcc


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Formulaire avec Bcc
    Bonsoir à tous

    Je viens solliciter votre aide.
    J'ai un formulaire qui fonctionne très bien mais que je souhaite modifier en rajoutant un destinataire caché.
    J'ai parcouru tout le forum et je sais qu'il faut rajouter $headers .= "Bcc: mail" . "\r\n";
    Malheureusement, cela ne fonctionne pas, je ne reçois même plus aucun mail, même en destinataire principal, j'ai du certainement oublier quelque chose ?
    Voici mon bout de code :

    // Variables concernant l'email
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $destinataire = 'mail1@toto.fr'; 
    $sujet = 'test'; 
    $contenu = '<html><head><title>Titre du message</title></head><body>';	
    $contenu .= '<p>Bonjour, vous avez reçu un message </p>';
    $contenu .= '</body></html>'; 
     
    		// Pour envoyer un email 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";
    		$headers .= "Bcc: <a href="mailto:mail2@toto.fr">mail2@toto.fr</a>" . "\r\n"; 
     
     
     
    		// Envoyer l'email
    		mail($destinataire, $sujet, $contenu, $headers); 
    		echo "<script language='Javascript'>document.location='test10.php'</script>";

    Merci à tous pour votre aide.

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Votre instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers .= "Bcc: <a href="mailto:mail2@toto.fr">mail2@toto.fr</a>" . "\r\n";
    provoque une confusion dans le traitement des doubles quotes ( " ).

    Par ailleurs il me semble que vous commettez une erreur d'interprétation du Bcc:
    Dans une liste Bcc (Blind carbon copy), chaque destinataire recevra une copie, mais ignorera les autres destinataires de cette liste. Il est donc inutile de présenter l'adresse Bcc sous forme de lien, puisqu'il s'agirait alors d'un lien offert au destinataire vers lui-même, ce qui n'a pas de sens.

    Ecrivez plus simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers .= "Bcc: mail2@toto.fr" . "\r\n";    ou encore:    $headers .= "Bcc: mail2@toto.fr\r\n";
    Le "\r\n" terminal, n'est peut-être même pas nécéssaire si le Bcc est le dernier bloc de votre '$headers'. Mais cela ne gênera pas...

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonjour iakou

    Merci pour votre réponse mais cela ne fonctionne malheureusement pas.
    J'ai essayé avec les deux solutions proposées $headers .= "Bcc: mail2@toto.fr" . "\r\n"; ou encore: $headers .= "Bcc: mail2@toto.fr\r\n";
    Le résultat est que je ne reçois plus du tout le formulaire, ni à l'adresse initiale et encore moins à l'adresse en Bcc.

    Merci de votre aide.

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonsoir.

    - Il n'y avait pas 2 solutions dans ma réponse, mais une seule (résoudre le conflit des doubles quotes).
    - Par ailleurs, avant vous ne receviez rien non plus !... Je veux dire depuis votre modif, vous ne recevez plus...

    Extrait de la doc PHP sur la fonction mail :
    Note:
    Si le message n'est pas reçu, essayez d'utiliser uniquement un caractère LF (\n). Quelques agents de transfert de mail Unix (par exemple » qmail) remplacent le caractère LF par le caractère CRLF automatiquement (ce qui revient à doubler le caractère CR si le caractère CRLF est utilisé). Ceci doit être un dernier recours car cela ne correspond pas à la » RFC 2822.
    Essayez en remplaçant "\r\n" par "\n" dans les lignes relatives à la variable $headers...

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Oui j'avais compris pour les deux solutions.
    J'ai donc testé en remplaçant "\r\n" par "\n" et c'est malheureusement pareil, je ne reçois rien.

    Alors, si, justement, en ne mettant pas tout ce qui est relatif à "Bcc", je reçois parfaitement mon formulaire.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Montre nous ton code actuel.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonjour Sabotage

    En fait, le code est sur le premier message.
    Si j'enlève
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers .= "Bcc: <a href="mailto:mail2@toto.fr">mail2@toto.fr</a>" . "\r\n";
    " je reçois correctement le formulaire et donc, aucun problème, ce qui prouve que le code est correct.

    Le problème est la gestion du Bcc. Dès que je rajoute cette ligne, je ne reçois plus rien.
    Idem avec les solutions proposées plus haut.
    J'ai essayé de rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $headers .= "Bcc: mail2@toto.fr\r\n";
    et je ne reçois plus du tout mon formulaire.
    Et dès que j'enlève cette ligne, je reçois le formulaire.

    Merci de votre aide

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme te l'as indiqué Iakou ton code de départ a une grosse erreur de syntaxe.
    Donc fais la correction et si ça ne marche pas, montre le code avec la correction.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Voici le code qui fonctionne parfaitement, je reçois mon formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $destinataire = 'mail1@toto.fr'; 
    $sujet = 'test'; 
    $contenu = '<html><head><title>Titre du message</title></head><body>';	
    $contenu .= '<p>Bonjour, vous avez reçu un message </p>';
    $contenu .= '</body></html>'; 
     
    		// Pour envoyer un email 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";
     
    		// Envoyer l'email
    		mail($destinataire, $sujet, $contenu, $headers); 
    		echo "<script language='Javascript'>document.location='test10.php'</script>";
    Ensuite j'ai donc intégré la proposition de iakou, et là, je ne reçois plus rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $destinataire = 'mail1@toto.fr'; 
    $sujet = 'test'; 
    $contenu = '<html><head><title>Titre du message</title></head><body>';	
    $contenu .= '<p>Bonjour, vous avez reçu un message </p>';
    $contenu .= '</body></html>'; 
     
    		// Pour envoyer un email 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";
    		$headers .= "Bcc: mail2@toto.fr\r\n";
     
    		// Envoyer l'email
    		mail($destinataire, $sujet, $contenu, $headers); 
    		echo "<script language='Javascript'>document.location='test10.php'</script>";
    Merci de votre aide

  10. #10
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.

    Extrait de la doc PHP / fonction mail() :
    VALEURS DE RETOUR :
    Retourne TRUE si le mail a été accepté pour livraison, FALSE sinon.
    Il est important de noter que ce n'est pas parce que le mail a été accepté pour livraison qu'il arrivera à destination.
    Testez le retour de mail(); Mais si cela retourne TRUE on ne sera guère plus avancé...

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Et oui malheureusement.

    Quelqu'un d'autre aurait une idée ?
    Ou bien quelqu'un aurait il un script de formulaire avec Bcc qui fonctionne ?
    Merci à tous de votre aide.

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et oui malheureusement.
    et oui malheureusement quoi ?
    Quel test as-tu pu faire et quel a été le retour ?
    Dans le dernier script que tu nous montres il y a une redirection donc s'il y avait une erreur tu ne la verrais pas.

    Si un mail non recu signifie souvent qu'un serveur SMTP l'a considéré comme un SPAM et ne le traite pas. L'ajout du BCC pourrait suffir a déclencher un critère.
    Si mail() renvoit vraiment TRUE, tu peux essayer la classe PHPMailer, elle permet un debug SMTP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Test de votre fonction mail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $retour = mail($destinataire, $sujet, $contenu, $headers);
    if ( $retour == False )          
         {
         echo "Mail non envoyé !" ;
         exit ;
         }
    Cela allait sans dire, mais c'est peut-être mieux en le disant...

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Merci Iakou, c'est effectivement mieux en le disant.

    Par contre, j'ai toujours le même souci.
    J'ai rajouté ton code que tu viens d'indiquer et cela ne change rien.
    Pas de message d'erreur, mais aucune réception non plus.

  15. #15
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca signifie que ton mail part, au moins du point de vue de PHP.
    Comme je t'ai dit, utilise PHPMailer en mode debug SMTP, tu en sauras peut être plus.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonjour.

    Comme l'avait pressenti "sabotage", vous allez devoir vous investir dans PHPMailer pour savoir ce qui se passe !...
    Néanmoins, en attendant la clef de l'énigme, vous pouvez peut-être prévoir une solution de remplacement :

    Puisque le paramètre Bcc coince, envoyez un mail directement à celui qui devait en recevoir copie. Par exemple "Bonjour. Pour votre information, voici une copie du message envoyé à mail1@toto.fr : etc etc...

    Cela peut dépanner dans l'immédiat...

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Juin 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Juin 2014
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Merci encore iakou mais je ne connais pas du tout phpmailer, il va falloir que je regarde ça

    Auriez vous un formulaire avec bcc qui fonctionne correctement ?
    D'autres avis aussi ?

    Merci

  18. #18
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Bonsoir.
    Votre code PHP est correct puisque mail() retourne True. C'est juste un problème de configuration système, et il faut détecter où cela coince.
    Essayez de trouver un code utilisant PHPMailer en mode débugging, afin de vous en inspirer.
    Il y a de la doc et des tutos sur la toile (J'ai survolé, mais cela ne semble pas trop compliqué).
    Une fois en place, vous laisserez le nouveau code (il pourra toujours servir...)
    Cdlt

  19. #19
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Si ton mail passe sans bcc et que tu n'as que deux mails à envoyer tu pourrais essayer de les envoyer l'un à la suite de l'autre plutôt qu'avec bcc.

    Sinon effectivement, investir un peu de temps à étudier le fonctionnement de PHPMailer est souvent très rentable.

    Au passage tu pourrais certainement faire mieux qu'une redirection javascript à la fin de ton code php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Pas bien
    echo "<script language='Javascript'>document.location='test10.php'</script>";
    Il y a la fonction header location (suivie d'un exit) prévue pour ça en php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: test10.php');exit;

Discussions similaires

  1. Vérification de formulaire avec regexp
    Par Shadow aok dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/08/2007, 11h57
  2. Réponses: 7
    Dernier message: 19/10/2004, 16h12
  3. Créer un formulaire avec VBA ?
    Par Jean Bonnisme dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/10/2004, 10h40
  4. Réponses: 10
    Dernier message: 10/06/2004, 16h20
  5. Gestion de formulaire avec xml et sans serveur ?
    Par meliane dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 05/05/2004, 19h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo