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 :

Mieux utiliser PHPMailer


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 590
    Points : 813
    Points
    813
    Par défaut Mieux utiliser PHPMailer
    Bonjour,

    Je pense que j'utilise mal PHPMailer. J'ai fait une recherche pour trouver des informations mais je tombe sur plusieurs difficultés:
    - En dehors du site officiel github les infos disponibles sont anciennes et même très anciennes;
    - Mon anglais est très vieux et lacunaire;
    - La version que j'utilise est périmée (5.2);
    - Est-ce que composer et packagist sont à installer?
    Ce qui fait que je ne comprends pas tout et que je ne suis vraiment pas sûr de ce que je dois faire.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 330
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 330
    Points : 15 673
    Points
    15 673
    Par défaut
    Que rencontrez vous comme problème ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Sur le github, on trouve un dossier "examples", avec des... exemples !

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 590
    Points : 813
    Points
    813
    Par défaut
    J'ai modifié le #1.

    Le script que j'utilisais avec la version 5.2 de PHPMailer ne fonctionne plus avec la version 3.1.0 de PHPMailer.
    Voir mon autre question ici.

    J'ai en particulier des difficultés à transmettre mes mails avec PHPMailer en local avec mon serveur SMTP que je n'utilise pas en production.
    Je me pose donc la question de savoir si je devrais tout recommencer avec la nouvelle version de PHPMailer.

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 590
    Points : 813
    Points
    813
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Sur le github, on trouve un dossier "examples", avec des... exemples !
    Oui bien sûr, je les ai vu mais pour cela il faudrait déjà que je puisse réinstaller correctement la nouvelle version (voir #1 et #4).

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ben oui, et alors ?

    • Il faut installer la nouvelle version
    • et modifier les codes en conséquence, en prenant EXEMPLE sur les... exemples.

    Et ce n'est pas compliqué de se faire une page de TEST simple pour... TESTER !


    Un exemple simple : contactform.phps
    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
    <?php
    /**
     * This example shows how to handle a simple contact form.
     */
    $msg = '';
    //Don't run this unless we're handling a form submission
    if (array_key_exists('email', $_POST)) {
        date_default_timezone_set('Etc/UTC');
        require '../PHPMailerAutoload.php';
        //Create a new PHPMailer instance
        $mail = new PHPMailer;
        //Tell PHPMailer to use SMTP - requires a local mail server
        //Faster and safer than using mail()
        $mail->isSMTP();
        $mail->Host = 'localhost';
        $mail->Port = 25;
        //Use a fixed address in your own domain as the from address
        //**DO NOT** use the submitter's address here as it will be forgery
        //and will cause your messages to fail SPF checks
        $mail->setFrom('from@example.com', 'First Last');
        //Send the message to yourself, or whoever should receive contact for submissions
        $mail->addAddress('whoto@example.com', 'John Doe');
        //Put the submitter's address in a reply-to header
        //This will fail if the address provided is invalid,
        //in which case we should ignore the whole request
        if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
            $mail->Subject = 'PHPMailer contact form';
            //Keep it simple - don't use HTML
            $mail->isHTML(false);
            //Build a simple message body
            $mail->Body = <<<EOT
    Email: {$_POST['email']}
    Name: {$_POST['name']}
    Message: {$_POST['message']}
    EOT;
            //Send the message, check for errors
            if (!$mail->send()) {
                //The reason for failing to send will be in $mail->ErrorInfo
                //but you shouldn't display errors to users - process the error, log it on your server.
                $msg = 'Sorry, something went wrong. Please try again later.';
            } else {
                $msg = 'Message sent! Thanks for contacting us.';
            }
        } else {
            $msg = 'Invalid email address, message ignored.';
        }
    }
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Contact form</title>
    </head>
    <body>
    <h1>Contact us</h1>
    <?php if (!empty($msg)) {
        echo "<h2>$msg</h2>";
    } ?>
    <form method="POST">
        <label for="name">Name: <input type="text" name="name" id="name"></label><br>
        <label for="email">Email address: <input type="email" name="email" id="email"></label><br>
        <label for="message">Message: <textarea name="message" id="message" rows="8" cols="20"></textarea></label><br>
        <input type="submit" value="Send">
    </form>
    </body>
    </html>
    N.B. NE PAS OUBLIER PHPMailerAutoload.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
        require '../PHPMailerAutoload.php';

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Citation Envoyé par moimp Voir le message
    Bonjour,
    - La version que j'utilise est périmée (5.2);
    La version 5.2 est toujours maintenu (malgré la sortie de la version 6). Preuve en est la sortie d'une 5.2.26 il y'a 2 jours

    Citation Envoyé par moimp Voir le message
    J'ai modifié le #1.

    Le script que j'utilisais avec la version 5.2 de PHPMailer ne fonctionne plus avec la version 3.1.0 de PHPMailer.
    Si tu descend en version c'est normal que ca marche mal.
    La version 6.0 est également une grosse réecriture et sera probablement incompatible également. Tu peux donc tout à fait rester en 5.2 pour le moment.

  8. #8
    Invité
    Invité(e)
    Par défaut
    @grunk
    Maintenant que tu en parles...
    ... je viens de vérifier la version de phpMailer que j'utilise moi-même : 5.2.22 !
    Je vais devoir me mettre à jour... ! ([EDIT] : ...c'est fait ! )


  9. #9
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 590
    Points : 813
    Points
    813
    Par défaut Je ne m'en sors pas
    Bonjour,
    Le site Github est une véritable jungle. Je n'y comprends rien. Il y a une multitude de liens de téléchargement qui débouchent parfois sur rien.
    J'ai téléchargé le package PHPMailer-master.zip et je l'ai décompressé dans un répertoire wamp64/www/PHPMailer-master/. Est-ce le bon package?
    Je suis sur la page https://github.com/PHPMailer/PHPMailer au chapitre Installation & loading.
    Je lis :
    PHPMailer is available on Packagist (using semantic versioning), and installation via composer is the recommended way to install PHPMailer. Just add this line to your composer.json file:

    "phpmailer/phpmailer": "~6.0"
    or run

    composer require phpmailer/phpmailer
    Encore une nouvelle difficulté: A quel endroit du fichier 'composer.json' faut-il ajouter la ligne "phpmailer/phpmailer": "~6.0"?
    Si j'utilise la deuxième solution, où dois-je mettre la ligne "composer require phpmailer/phpmailer"?
    Qu'est-ce que vendor et vendor/autoload.php viennent faire ici? Ils ne figurent pas dans le kit de chargement et sont pourtant utilisés dans les exemples.

    Et tu dis que ce n'est pas compliqué!

    A part cela, les fichiers sont encodés en ANSI. Je suppose qu'il n'y a pas d'inconvénient à tout convertir en UTF-8 (sans BOM), surtout pour les fichiers de langue.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    OUBLIE la version 6...
    (je n'ai pas tout compris non plus, et je ne peux pas t'aider...)

    Et utilise la version PHPMailer 5.2.26 :
    pas besoin de composer. Il suffit de copier-coller le dossier.

  11. #11
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 590
    Points : 813
    Points
    813
    Par défaut
    Je suis content de pouvoir t'aider à mon tour. Les auteurs ont compliqué les choses inutilement.
    Tu installes le package que je t'ai cité (PHPMailer-master.zip). Tu oublies le charabia et tu commences le script modèle comme ceci:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    // Import PHPMailer classes into the global namespace
    // These must be at the top of your script, not inside a function
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
     
    //Load composer's autoloader ---> On laisse tomber
    //require 'vendor/autoload.php';
    //Chargement des classes
    require 'src/Exception.php';
    require 'src/PHPMailer.php';
    require 'src/SMTP.php';
    C'est finalement assez simple.

    J'ai quand même encore un problème: J'ai le message "Message has been sent" mais en SMTP il n'arrive jamais et je ne comprends pas pourquoi.

  12. #12
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Tu peux activer le debuggage dans phpmailer pour avoir plus d'infos :

    Ajoute :
    puis à la fin de ton script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (!$mail->send()) {
        echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {
        echo 'Message sent!';
    }
    Tu devrais voir d'afficher l'ensemble de la communication avec le server SMTP. C'est pas forcément très clair , mais si il y'a une erreur tu vas la trouver

  13. #13
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 590
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 590
    Points : 813
    Points
    813
    Par défaut
    Merci, je connais les deux possibilités. Le problème est que je n'ai aucune erreur (j'ai un message de confirmation d'envoi) mais le mail n'arrive pas. Je pense que j'ai un problème de SMTP en local.

  14. #14
    Membre régulier
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    Bonsoir,
    Je suis confronté à des soucis d'envoi de mail, alors je vais suivre ce fil avec assiduité pour essayer de tout comprendre

Discussions similaires

  1. [Débutant] Mieux utiliser la fonction intersect
    Par abel413 dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/07/2013, 09h03
  2. [Débutant] Vaut il mieux utiliser un Dictionary ou une Liste? (Performance)
    Par takinelinfo dans le forum C#
    Réponses: 17
    Dernier message: 04/08/2011, 13h49
  3. Réponses: 12
    Dernier message: 03/07/2009, 13h37
  4. Faut il mieux utiliser awt ou swing ?
    Par weed dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 06/01/2006, 01h54
  5. vaut il mieux utiliser ArrayList ou implémenter collection?
    Par irnbru dans le forum Framework .NET
    Réponses: 17
    Dernier message: 05/11/2005, 12h51

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