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 :

[Mail] formulaire bizarre envoi e-mail


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut [Mail] formulaire bizarre envoi e-mail
    J'ai un formulaire qui marche à merveille avec hébergement lycos. Il s'agit d'un envoie d'e-mail.

    Le même formulaire (copier/coller) est mis sur un autre site hébergement 1&1.

    Et là, patatras, ça ne marche plus. En fait, voici ce qui se passe :

    La structure conditionnelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if( mail($to, $sujet, $message) ) { ... }
    else {... }
    fonctionne toujours avec else. Seule l'instruction contenu dans les accolades de else est exécutée. Donc, le mail n'est jamais envoyé (j'ai d'ailleurs vérifié).

    Lorsque j'exécute directement la page contenant le code php d'envoi e-mail, sans passer par la page contenant le formulaire, et ben, ça marche.

    Vous y comprenez quelque chose vous ?

    Moi, pas du tout !

  2. #2
    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
    Si on pouvait voir un peu de code ca serait plus facile pour t'aider.

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Essaye cette fonction au lieu d'utiliser directement mail() :
    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
    //============================================================
    //  MySendMail  -  SubØ - Developpez.com
    //============================================================
    function MySendMail($namefrom,$from,$to,$objet,$contenu){
      $rn=((substr(PHP_OS,0,3)!="WIN")?"\n":"\r\n");
      @ini_set('sendmail_from',$from);
      $header='From: '.$namefrom.' <'.$from.'>'.$rn.
              'Content-type: text/plain; charset=iso-8859-1'.$rn.
              'Content-transfer-encoding: base64'.$rn.
              'X-Priority: 3'.$rn.
              'X-MSMail-Priority: Normal'.$rn.
              'X-Unsent: 1'.$rn.
              'X-Originating-IP: [0.0.0.0]'.$rn;
      return @mail($to,$objet,chunk_split(base64_encode($contenu)),$header);
    }
    Exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $adr_from='expediteur@server.com';
    $adr_to='destinataire@server.com';
    $sujet='Envoi d\'un mail avec MySendMail';
    $contenu='Ceci est un simple test.';
     
    $res=MySendMail('',$adr_from,$adr_to,$sujet,$contenu);
    if($res) echo 'Envoi du mail effectué.';
        else echo 'Echec durant l\'envoi du mail.';

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut
    En fait, quand je clique sur le bouton qui soumet le formulaire, voici ce qui se passe :

    Si le champ est vide, alors, la réponse correspond à l'envoi de l'email
    alors que si je remplis le champ, la réponse est l'échec d'envoie.

    Et ceci est vrai, aussi bien avec votre fonction qu'avec la mienne.

    Voici le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form method="GET" action="http://www.debutantprog.com/php/php.php" name="monform">
     
    Conseiller ce site à un ami. Son adresse e-mail :  <input type="text" name="email"> <input type="submit" value="Envoyer"> 
     
    </form>
    Voici le code de la page php

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?
     
    function MySendMail($namefrom,$from,$to,$objet,$contenu){
      $rn=((substr(PHP_OS,0,3)!="WIN")?"\n":"\r\n");
      @ini_set('sendmail_from',$from);
      $header='From: '.$namefrom.' <'.$from.'>'.$rn.
              'Content-type: text/plain; charset=iso-8859-1'.$rn.
              'Content-transfer-encoding: base64'.$rn.
              'X-Priority: 3'.$rn.
              'X-MSMail-Priority: Normal'.$rn.
              'X-Unsent: 1'.$rn.
              'X-Originating-IP: [0.0.0.0]'.$rn;
      return @mail($to,$objet,chunk_split(base64_encode($contenu)),$header);
    }
     
     
    $adr_from='webmaster@debutantprog.com';
    $adr_to = $_GET['email']." webmaster@debutantprog.com";
    $sujet = 'un ami vous recommande ce site';
    $contenu='Très bon site pour débutants en java ou en programmation';
     
    $res=MySendMail('',$adr_from,$adr_to,$sujet,$contenu);
    if($res) echo 'Envoi du mail effectué.';
        else echo 'Echec durant l\'envoi du mail.';
    ?>
    C'est comme si le formulaire n'est pas bon. Mais ce n'est pas possible puisque ça marche avec l'hérgement lycos et pas avec l'hébergement 1&1.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut
    Bizarre !

    J'ai changé la ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $adr_to = $_GET['email']." webmaster@debutantprog.com";
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $adr_to = $_GET['email'];
    Et cette fois, ça marche !

    L'envoie multiple, ça n'existe donc pas chez cet hébergeur ?

  6. #6
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    L'envoi multiple existe, c'est simplement toi qui ne respecte pas la syntaxe; Les adresses doivent être séparées par un point virgule...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Sub0 Voir le message
    L'envoi multiple existe, c'est simplement toi qui ne respecte pas la syntaxe; Les adresses doivent être séparées par un point virgule...
    J'ai essayé le point virgule. Mais ça ne marche pas.
    COmment faites vous ?

  8. #8
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 887
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 887
    Points : 16 320
    Points
    16 320
    Par défaut
    C'est la virgule qu'il faut utiliser ..

    Cf doc sur la fonction mail :
    destinataire.com, autre_destinataire@example.com

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    C'est la virgule qu'il faut utiliser ..

    Cf doc sur la fonction mail :
    Pourtant, ceci ne marche pas du tout !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                 $adr_to = $_GET['email'], 'adresse@domaine.com';
    Dans le cas où l'une des adresse de destinataire est la variable saisie dans un formulaire, ça se passe comment ? Peut-être est-ce là le problème ?

    Mon code ci-dessus est-il bon ?

  10. #10
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 887
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 887
    Points : 16 320
    Points
    16 320
    Par défaut
    Citation Envoyé par Nayila Voir le message
    Mon code ci-dessus est-il bon ?
    Pas vraiment non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $adr_to = $_GET['email'] . ',adresse@domaine.com';

  11. #11
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par Nayila Voir le message
    Pourtant, ceci ne marche pas du tout !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                 $adr_to = $_GET['email'], 'adresse@domaine.com';
    Dans le cas où l'une des adresse de destinataire est la variable saisie dans un formulaire, ça se passe comment ? Peut-être est-ce là le problème ?

    Mon code ci-dessus est-il bon ?
    Bonjour,

    Ce code n'est pas bon. Il faut que tu fasses plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                 $adr_to = $_GET['email'].',adresse@domaine.com';
    ET avant de faire ça, il serait bon de vérifier que le paramètre $_GET['email'] est bien une adresse mail

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Juste une petite info en passant car je ne suis absolument pas sûr que ton problème vienne de là :

    J'ai rencontré différents problèmes avec 1&1 : par exemple file_get_contents() inutilisable ou fOpen() inutilisable.

    Ce ne sont pas les seules fonction qui ne fonctionnaient pas mais je n'ai pas tous les exemples en tête...

    Il suffit souvent de leur téléphoner pour modifier l'ini ou débloquer certaines fonctions.

    Moi pour finir je préfère passer par un autre hébergeur (Infomaniak) avec lequel tout fonctionne et dont la hotline coute le prix d'un appel local (contrairement au 0.30 € / min de 1&1).

    Voilà, fin de la parenthèse...

    Mais je ne suis pas sûr du tout de ce que j'avance concernant les raisons de ton problème.

    Bonne fin de journée.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Eusebe Voir le message
    Bonjour,

    Ce code n'est pas bon. Il faut que tu fasses plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                 $adr_to = $_GET['email'].',adresse@domaine.com';
    ET avant de faire ça, il serait bon de vérifier que le paramètre $_GET['email'] est bien une adresse mail
    ça ne marche pas non plus. J'ai résolu le problème autrement.

    Ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $dom = 'adresse@domaine.com';
    $adr_to = $_GET['email'].' ,'.$dom ;
    Et là, ça marche.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mon envoi de mail fonctionne mais envoi 5 mail
    Par blinkman04 dans le forum Langage
    Réponses: 0
    Dernier message: 17/04/2013, 11h37
  2. Réponses: 3
    Dernier message: 11/10/2006, 10h50
  3. Réponses: 11
    Dernier message: 10/07/2006, 16h17
  4. [Mail] envoie de mail formulaire
    Par sniperwolf dans le forum Langage
    Réponses: 7
    Dernier message: 17/10/2005, 16h18
  5. [Debutant]Formulaire d'envoie de mail
    Par Wyatt dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 31/01/2005, 21h04

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