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 :

Ajout de deux variables dans la fonction SendMail de la class SMTPClient [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut Ajout de deux variables dans la fonction SendMail de la class SMTPClient
    Bonjour.

    J'ai une class SMTPclient et j'ai ajouté deux variables $nom et $tel mais je ne sais pas où placer l'information dans la class SMTPClient dans la fonction SendMail. J'ai passé la soirée à méditer la dessus et je n'arrive pas à une solution. Pour le formulaire et la validation PHP, je n'ai pas de problème.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    class SMTPClient
     
    {
        function SMTPClient($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $nom, $tel, $subject, $body)
        {
            $this->SmtpServer = $SmtpServer;
            $this->SmtpUser = base64_encode($SmtpUser);
            $this->SmtpPass = base64_encode($SmtpPass);
            $this->from = $from;
            $this->to = $to;
            $this->nom = $nom;
            $this->tel = $tel;
            $this->subject = $subject;
            $this->body = $body;
            if ($SmtpPort == "") {
                $this->PortSMTP = 26;
            }
            else {
                $this->PortSMTP = $SmtpPort;
            }
        }
     
        function SendMail()
        {
            if ($SMTPIN = fsockopen($this->SmtpServer, $this->PortSMTP)) {
                fputs($SMTPIN, "EHLO " . $_SERVER['HTTP_HOST'] . "\r\n");
                $talk["hello"] = fgets($SMTPIN, 1024);
                fputs($SMTPIN, "auth login\r\n");
                $talk["res"] = fgets($SMTPIN, 1024);
                fputs($SMTPIN, $this->SmtpUser . "\r\n");
                $talk["user"] = fgets($SMTPIN, 1024);
                fputs($SMTPIN, $this->SmtpPass . "\r\n");
                $talk["pass"] = fgets($SMTPIN, 256);
                fputs($SMTPIN, "MAIL FROM: <" . $this->from . ">\r\n");
                $talk["From"] = fgets($SMTPIN, 1024);
                fputs($SMTPIN, "RCPT TO: <" . $this->to . ">\r\n");
                $talk["To"] = fgets($SMTPIN, 1024);
                fputs($SMTPIN, "DATA\r\n");
                $talk["data"] = fgets($SMTPIN, 1024);
                fputs($SMTPIN, "To: <" . $this->to . ">\r\nFrom: <" . $this->from . ">\r\nSubject:" . $this->subject . "\r\n\r\n\r\n" . $this->body . "\r\n.\r\n");
                $talk["send"] = fgets($SMTPIN, 256);
     
                // CLOSE CONNECTION AND EXIT ...
     
                fputs($SMTPIN, "QUIT\r\n");
                fclose($SMTPIN);
     
                //
     
            }
     
            return $talk;
        }
    }
    Les erreurs que j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Missing argument 9 for SMTPClient::SMTPClient(), called in /home/public_html/include/contact.php on line 64 and defined in /home/public_html/include/contact.php on line 9
     Warning:  Missing argument 10 for SMTPClient::SMTPClient(), called in /home/public_html/include/contact.php on line 64 and defined in /home/public_html/include/contact.php on line 9
     Undefined variable: subject in /home/public_html/include/contact.php on line 18
     Undefined variable: body in /home/public_html/include/contact.php on line 19
    J'apprécierais une aide qui serait le bienvenue.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    "Missing argument" ça veut dire que tu appelles ton constructeur sans lui passer tes nouveaux paramètres.
    Deux possibilités pour corriger ça : soit tu ajoutes des valeurs lors de l'appel du constructeur, soit tu rends tes paramètres facultatifs en leur donnant une valeur par défaut (à noter que dans ce cas, il faut les mettre en dernier dans l'appel de la fonction).

    Après pour savoir ce que tu en fais dans ta classe, ben... tu veux en faire quoi ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    C'est un formulaire de contact contenant le dit formulaire html, la validation PHP et la Class.
    Depuis que j'ai ajouté "tel" et "non", les courriels ne contiennent pas ces informations.

    Note: Je n'ai pas fabriqué la class, je tente de l'adapté.


    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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    <?php
    $SmtpServer="";
    $SmtpPort="25";
    $SmtpUser="";
    $SmtpPass="";
     
    // La class SMTP: C'est ici qui manque de quoi:
    class SMTPClient
    {
        function SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $nom, $tel, $subject, $body)
        {
            $this->SmtpServer = $SmtpServer;
            $this->SmtpUser = base64_encode ($SmtpUser);
            $this->SmtpPass = base64_encode ($SmtpPass);
            $this->from = $from;
            $this->to = $to;
            $this->nom = $nom;
            $this->tel = $tel;
            $this->subject = $subject;
            $this->body = $body;
                if ($SmtpPort == "")
                {
                $this->PortSMTP = 25;
                    }else{
                $this->PortSMTP = $SmtpPort;
                }
        }
        function SendMail ()
        {
            if ($SMTPIN = fsockopen ($this->SmtpServer, $this->PortSMTP))
            {
                             fputs ($SMTPIN, "EHLO ".$_SERVER['HTTP_HOST']."\r\n");
                             $talk["hello"] = fgets ( $SMTPIN, 1024 );
                     fputs($SMTPIN, "auth login\r\n");
                     $talk["res"]=fgets($SMTPIN,1024);
                    fputs($SMTPIN, $this->SmtpUser."\r\n");
                        $talk["user"]=fgets($SMTPIN,1024);
                        fputs($SMTPIN, $this->SmtpPass."\r\n");
                    $talk["pass"]=fgets($SMTPIN,256);
                             fputs ($SMTPIN, "MAIL FROM: <".$this->from.">\r\n");
                             $talk["From"] = fgets ( $SMTPIN, 1024 );
                             fputs ($SMTPIN, "RCPT TO: <".$this->to.">\r\n");
                             $talk["To"] = fgets ($SMTPIN, 1024);
                             fputs($SMTPIN, "DATA\r\n");
                    $talk["data"]=fgets( $SMTPIN,1024 );
                    fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n\r\n\r\n".$this->body."\r\n.\r\n");
                    $talk["send"]=fgets($SMTPIN,256);
                             //CLOSE CONNECTION AND EXIT ...
                             fputs ($SMTPIN, "QUIT\r\n");
                             fclose($SMTPIN);
                 //
            }
        return $talk;
        }
    }
     
    // La validation du formulaire:
    if($_SERVER["REQUEST_METHOD"] == "POST")
    {
        $to =  "moncourriel@duserveur.com";
        $nom = isset($_POST['nom']) ? preg_replace( "/[^\s\.\-a-zA-Z]/", "", $_POST['nom'] ) : "";
        $tel = isset($_POST['tel']) ? preg_replace( "/[^\-0-9]/", "", $_POST['tel'] ) : "";
        $from = isset($_POST['from']) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['from'] ) : "";
        $subject = "Vous avez un message visiteur";
        $body = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";
        $SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body);
        $SMTPChat = $SMTPMail->SendMail();
    }
    ?>
     
    <!-- Le formulaire: -->
    <form method="post" action="" id="form">
        <table class="bloctable" width="800px">
            <caption><img src="/images/titlecontact.png" alt="" /></caption>
            <tr><td class="titleTd1" width="20%">Contact:</td><td class="titleTd2" width="80%"><input readonly type='text' name="sub" value="Webmestre" /></td></tr>
            <tr><td class="titleTd1">Nom:</td><td class="titleTd3"><input class="courriel tooltip" title="Votre courriel" required autocomplete="off" type='text' name="nom" placeholder="indiquer votre nom" maxlength="60" /></td></tr>
            <tr><td class="titleTd1">Tel:</td><td class="titleTd3"><input class="courriel tooltip" title="Votre téléphone" required autocomplete="off" type='tel' name="tel" placeholder="555-555-1212" maxlength="25" pattern="\d{3}[\-]\d{3}[\-]\d{4}" /></td></tr>
            <tr><td class="titleTd1">Email:</td><td class="titleTd3"><input class="courriel tooltip" title="Votre courriel" required autocomplete="off" type='email' name="from" placeholder="votre@courriel.com" maxlength="45" autofocus /></td></tr>
            <tr><td class="titleTd1">Message :</td><td class="titleTd3"><textarea style="overflow-y:auto" class="courriel tooltip" title="votre message et assez-vous de répondre au Captcha" rows="3" required autocomplete="off" name="message" placeholder="Écrire votre message ici" maxlength="500"></textarea></td></tr>
            <tr><td class="titleTd1"></td><td><input class="tooltip" title="Vous pouvez envoyer..." type="submit" value=" Envoyer" /></td></tr>
            <?php
            if($_SERVER["REQUEST_METHOD"] == "POST")
            { echo '<tr><td class="titleTd1">&nbsp;Résultat:</td><td class="titleTd2"><input class="tooltip" title="Une réponse sous peu..." readonly type=\'text\' name="sub" value="Message envoyé avec succès, MERCI!" /></td></tr>'; }
            ?>
        </table>
    </form>
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    où veux-tu ajouter le nom et le tel dans ton courriel exactement ? dans le corps du message, sous la forme d'une signature peut-être ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Dans le corps du message.


    Genre:

    nom
    tel

    message
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Hum...
    au niveau de la création du corps de message peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    puts($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n\r\n\r\n".$this->nom."\r\n".$this->tel."\r\n\r\n".$this->body."\r\n.\r\n");
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    j'obtiens ceci:
    [05-Oct-2015 06:06:41 PHP Fatal error: Call to undefined function puts() in /home/public_html/include/contact.php on line 45

    la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            puts($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n\r\n\r\n".$this->nom."\r\n".$this->tel."\r\n\r\n".$this->body."\r\n.\r\n");
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    oups ! j'ai perdu un f en route :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n\r\n\r\n".$this->nom."\r\n".$this->tel."\r\n\r\n".$this->body."\r\n.\r\n");
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Merci Celira de votre aide; ça fonctionne bien et ça donne ce que je voulais.

    Là, je sais comment ajouter un item dans le corps du courriel.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

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

Discussions similaires

  1. [XL-2007] Trouver un coefficient en fonction de deux variables dans un tableau
    Par l.keysoft dans le forum Excel
    Réponses: 2
    Dernier message: 18/08/2010, 16h40
  2. [Tableaux] Récuperer variable dans une fonction
    Par amarcil dans le forum Langage
    Réponses: 12
    Dernier message: 12/02/2006, 11h56
  3. Pb de variable dans une fonction :
    Par soad029 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/10/2005, 14h54
  4. [PL/SQL] ajout de deux variables
    Par seal dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/08/2005, 18h19
  5. [AS2] déclarer des variables dans une fonction
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 12
    Dernier message: 02/08/2005, 13h50

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