Aller au contenu
  • Veuillez ne pas poster de message pour but d'insulter, incitation à la haine, propos sexuels et tout autre qui ne respecte pas nos conditions générales !

PluginMail - ACCESS VERSION | Automatisez les envois


Ubrain

Messages recommandés

Hey les dev ! 

Il y a deux mois j'avais publié un plugin permettant d'envoyer des mails à n'importe qui depuis n'importe quelle adresse mail,
Si vous l'avez raté, n'hésitez pas à aller y jeter un coup d’œil, le lien est 

Pour avoir accès à ce lien, merci de vous connecter.



Bref, je me suis récemment posé la question, pourquoi ne pas recréer une extension su plugin mais permettant d'automatiser l'envoi ?
Cela pourrait être très pratique pour par exemple, les Newsletters, Code de Confirmation et autre...

Et bien je pense que je ne vous apprend rien si je vous dit que cette extension je l'ai codé et elle est toute prête, (bah oui, sinon je n'aurais pas fais ce sujet !)
Bon, je vous divise tout en deux catégories, 
La première est optionnelle à aller consulter car cette fois-ci tout est pré-configuré et ne prérequis aucune DB
mais si vous voulez comprendre comment l'utiliser, tout est dit pour vous !


1. Catégorie technique le fonctionnement, les erreurs, la configuration, code

Révélation

Cette catégorie est elle aussi divisé en 3 parties :

1. Fonctionnement et explications

Révélation

Le fonctionnement du plugin est simple, seule son utilisation est très compliqué. Il faut avoir des bases en PHP pour utiliser l'extension.
Lors de l'envoi d'un mail, tous les données sont récupérés grâce à $_POST, ce qui signifie que pour que la page d'envoi reçoit les données, il faut les envoyer en $_POST, il existe deux moyens de le faire, 
Premièrement, voici un code permettant d'envoyer un e-mail mais de façon non autonome, il utilise la balise <form> pour envoyer les données tel un formulaire :
 



<form action="send.php" method="post">
    <input type="mail" placeholder="Email d'envoi" name="mail">
    <input type="mail" placeholder="Destinataire" name="pour">
    <input type="mail" placeholder="Renvoyer en cas de réponse à" name="reply">
    <input type="text" placeholder="Sujet" name="sujet">
    <textarea name="contenu">Message à envoyer</textarea>
    <input type="submit">
</form>

Comme vous pouvez le voir, le nom de chaque valeur est précis, et pour vous faciliter la lecture, les voici énumérés ci-dessous

  • L'e-mail depuis lequel sera envoyé le mail = mail
  • Le destinataire = pour
  • (optionnel) Renvoyer à en cas de réponse (reply) = reply
  • Sujet du mail = sujet
  • Contenu du mail = contenu


Mais pour automatiser l'envoi de mail, vous devez modifier une partie du code de la page d'envoi
Vous pouvez aussi faire passer les champs en hidden mais cela n'est pas très rentable est plus compliqué

Pour automatiser on va se rendre lors de la récupération des données et modifier le fait que les donnés soient tirés de variables superglobales (ici $_POST) pour que ce soient des variables prises directement (étant donné que ce code aura pour but d’être include), donc voici la partie de code à modifier :
 



       <?php
        $ip = $_SERVER['REMOTE_ADDR'];
        $de = $_POST['mail'];
        $reply = $_POST['reply'];
        $pour = $_POST['pour'];
        $sujet = $_POST['sujet'];
        $contenu = $_POST['contenu'];
        $pour = str_replace("%40", "@", $pour);
        $sujet = str_replace("'", "-", $sujet);
        $contenu = str_replace("'", "-", $contenu);
        $reply = str_replace("%40", "@", $reply);
        ?>

Les lignes qui vont nous intéresser ici sont les 6 premières qui, comme vous pouvez le voir sont récupérées à l'aide de $_POST, et bien il va falloir tout bêtement remplacer ceci, voici un exemple pour un code de confirmation



       <?php
        $ip = $_SERVER['REMOTE_ADDR'];
        $de = '[email protected]';
        $reply = '[email protected]';
        $pour = $user['mail'];
        $sujet = 'Confirmation de votre inscription';
        $contenu = 'Merci de vous etre inscrits ! Voici le lien pour confirmer et acceder à votre compte : http://site.com/confirm';
        $pour = str_replace("%40", "@", $pour);
        $sujet = str_replace("'", "-", $sujet);
        $contenu = str_replace("'", "-", $contenu);
        $reply = str_replace("%40", "@", $reply);
        ?>

Et voila, toutes vos données sont prêtes à l'envoi !


2. Erreurs explications et résolutions

Révélation

Bon pour être franc, il n'existe qu'une seule erreur, et celle-ci est vraiment toute bête. C'est simplement que ce que vous avez entré est invalide, soit que les variables sont vides, soit inexistantes si vous les avez modifiés.
Pour être certain que cette erreur viens de cette source, voici le code d'erreur exacte que j'ai implanté dans le plugin.



Erreur : certaines variables semblent etre vides ou inexistantes. Veuillez vous assurer que tous les champs soient remplits correctement et envoyés à l\'aide de $_POST; si le problème persiste, réinstallez le plugin ou contactez le développeur (UBrainFr)


Pour les erreurs autres, essayez, 

  • De ne pas utiliser wampp ou xamp, le plugin n'est pas optimisé pour cela !  
  • De mettre à jour votre version de php
  • De vérifier que vous n'avez pas modifié de parties sensibles du code, cela peut être catastrophique ;) 


Si les erreurs persistent, réinstallez le plugin puis contactez moi par discord, tout est dans la barre du profile juste à gauche !

 


3. Code complet de la page d'envoi

Révélation

Voici ci-joint le code complet de la page d'envoi du mail :
 

Révélation



<!DOCTYPE html>
<!-- 
Cette partie du code doit rester intacte
**********************************************
* Codé par UBrainDev,                        *
* Ce code utilise PHP7 dont la fonction mail *
* En cas d'erreur ou de problème, contactez  *
* moi par discord : UBrainDev#3166           *
**********************************************
Ce plugin est un extention du PluginMail V1 permettant l'autmatisation d'envoi de mails.
-->
<html>
	<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!--
****************************************************************************************************
* IMPORTANT : entrez ici les identifiants et mot de passe                                          *
* de votre DB : si vous ne savez pas comment faire, je vous                                        *
* à aller consulter ce cours d'openclassroom :                                                     *
* https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/lire-des-donnees-2  *
****************************************************************************************************
-->
<!--
********************************
* Prérequis PHP pour l'envoi   *
* Récupération des données     *
********************************
-->
        <?php
        $ip = $_SERVER['REMOTE_ADDR'];
        $de = $_POST['mail'];
        $reply = $_POST['reply'];
        $pour = $_POST['pour'];
        $sujet = $_POST['sujet'];
        $contenu = $_POST['contenu'];
        $pour = str_replace("%40", "@", $pour);
        $sujet = str_replace("'", "-", $sujet);
        $contenu = str_replace("'", "-", $contenu);
        $reply = str_replace("%40", "@", $reply);
        ?>

<!--
********************************
* Vérification des variables   *
********************************
-->        
     <?php
        if ($de == NULL || $pour== NULL || $sujet == NULL || $contenu == NULL) {
    echo 'Erreur : certaines variables semblent etre vides ou inexistantes. Veuillez vous assurer que tous les champs soient remplits correctement et envoyés à l\'aide de $_POST; si le problème persiste, réinstallez le plugin ou contactez le développeur (UBrainFr)';
    exit;
        }
     ?>
        
<!--
********************************
* Envoi du mail vers le        *
* destinataire                 *
********************************
-->

<?php
$destinataire = $pour;
$subject = $sujet;
/* Ici vous pouvez ajouter du texte automatique, $contenu est le message initial à envoyer, mais vous pouvez ajouter entre les apostrophes (') du texte, par exemple
$message = 'Message envoyé : '.$contenu.'. Envoyé par '.$ip.'';   */
$message = ''.$contenu.'';
$headers = 'From: '.$de.'' . "\r\n" .
         'Reply-To: '.$reply.'' . "\r\n" .
         'X-Mailer: PHP/' . phpversion();

   mail($destinataire, $subject, $message, $headers);
?>
	</head>

	<body>
    </body>
</html> 

Cela peut paraître peu par rapport au plugin mail V1, mais j'ai juste tout décortiqué pour ne laisser que le moteur et que cela ne ralentisse pas vos pages.

 

 

 



2. Installation du plugin

Révélation
Citation

N'oubliez pas, ce plugin est fait principalement pour être dans des includes ;) 


Voici tout simplement le fichier, il est tout seul, je vous recommande d'essayer avec la formule que j'ai donné dans le fonctionnement (catégorie 1) pour premièrement voir si le plugin est compatible, ce qui est pratiquement certain ;)
Fichier : send.php
Pour information : vous pouvez renommer le fichier à votre guise, il n'y a aucune vérifications sur ce point

 


Voila, cela faisait longtemps que je n'avais pas fait grand chose, j'espère revenir avec de nouveaux plugin avant fin septembre,
Au passage, pour me supporter car coder et écrire ce texte m'a prit beaucoup de temps, tu peux mettre un +1 ;) 

En attendant, je vous souhaite bonne chance et très bonne continuation à tous !

Mais surtout, profitez du plugin !
 

Modifié par Ubrain

 

 

Lien à poster
Partager sur d’autres sites

Salut,

Plugin très intéressant, ça peut aider ;)

__________________________________________________________________________________________________________________________________

           AKRINO

__________________________________________________________________________________________________________________________________

 

Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...