Que veux-tu précisémment ? Alléger ton code ?
bonjour à tous,
je suis nouveau en php j'avoue ne pas etre encore à l'aise avec les fonctions et le classes.
encore moins avec les librairies.
ceoendant j'ai besoin d'apprendre a utiliser phpmailer. mon site site viens de migrer sur ionos. et afin d'utiliser mon mail pour communiquer avec mes utilisateurs il semblerait que je dois utiliser le smtp.
du coup j'ai choisi phpmailer.
imaginez le choc entre la fonction mail() native PHP et La librairie phpmailer. c'est un grand bon en avant pour moi.
je trouve qu'il y a beaucoup de concepts utilisés...
ma question est la suivante
comment aleger mon code ?
jusqu'a present en suivant les cours grafikart il y avait toujours cette préoccupation de clarifier et bien organiser le code.
L’utilisation de toutes les méthodes de phpmailer afin de paramétrer l’envoi de mail sont longues et fastidieuses je trouve sachant que d’un mail à l’autre
Peut de chose change hormis le destinataire, le corps du mail ...
Qu’elle est la meilleure façon de procéder selon vous ?
Par avance merci pour vos pistes de réflexions
12 réponses
Bonjour,
désolé de ne répondre que maintenant l'alerte était dans mes mails indésirables :/
oui alleger le code et tre plus ordonné je pensais à quelque chose comme ça :
et dans mon autoloader :
et dans mon code n'appeler que
Je crois avoir trouver une façon de faire ...
j'ai du commenter cette ligne //$this->mail->SMTPDebug = SMTP::DEBUG_SERVER; j'ai une erreur si je l'utilise ...
Très honnêtement je n'ai jamais bidouiller PHPMailer, et à vrais dire je préfère éviter de toucher au travaille des autres car la moindre erreur peu tout faire foirer. ^^
J'avais essayé avec RoundCube, mais c'était une mauvaise idée.. Haha.
Bonsoir.
@SimonDlgs Tu n'as pas compris ce qu'il voulais faire, il ne cherches pas à modifier une classe de la librairie, mais de faire une classe dans son projet, afin de se simplifier l'utilisation de la librairie, soit qu'elle puisse par exemple initialiser la librairie avec une configuration qui lui est propre, afin de ne pas la définir à chaque fois qu'il l'utilise dans son projet.
Il ne s'agit donc pas de modifier la classe de la librairie comme tu le laisse l'entendre.
effectivement Lartak !
j'ai surement pas été suffisament clair
je posterai ma solution finale prochainement j´ai effectué quelques modifications!
je passe par une etape intermédiaire pour l’instanciation je crois que l´on appelle ça la "factory"
Au final je crois que j’ai un peu paniqué car je neu savais pas trop par quel bout prendre mon « problème »
En tous les cas ça fonctionne comme je l’espérais
Je suis quand même preneur de vos remarques afin de perfectionner ma pratique
Effectivement j'avais mal compris !
$this->mail->send(); est un Boolean donc pas possible d'y affecter de paramètres.
$this->mail->send(); est un Boolean donc pas possible d'y affecter de paramètres.
Pourquoi dis-tu ceci ?
Il ne passe aucun argument à la méthode send de la classe PHPMailer.
Ayant relue sa demande, j'ai compris qu'il cherchait à faire quelque chose de ce genre :
Donc affecter des paramètres à sendMail.
sendMail est une méthode de sa classe et non de PHPMailer, il voulait simplement dire qu'au lieu de devoir instancier la classe PHPMailer en définissant tous les paramêtre nécessaires à chaque fois, qu'il voualit créer sa classe qui aurait une méthode qui lui permettrait d'utiliser la classe PHPMailer en définissant à sa méthode, les paramêtres qui pourraient changer selon le cas sans devoir redéfinir tout à chaque fois.
Hello,
Personnellement, concernant la partie constructeur, je mettrais la config SMTP pour tes mails, ce qui permet d'éviter de refaire la config à chaque fois que tu envoies un mail.
Concernant ta méthode sendMail, suivant l'utilité que tu veux faire de ta classe, je passerais plutôt à quelque chose comme ceci, ce qui te permettrait d'envoyer plusieurs fois le même mail.
Ca te permettrait d'utiliser ta classe comme suit :
Après, ça reste à changer selon tes et ce que tu préfère faire.
De plus, n'ayant pas vraiment tester, je ne suis pas sûr que ça fonctionne.
Et petit tips de fin, je ferais aussi en sorte de créer une "factory" qui me retournerait tout le temps un nouvel objet mail qui est propre et prêt à l'emploi.
super idée j´ai pas anticipé l´envoi de mail a la chaine ! merci