Jump to content
  • Please do not post a message for the purpose of insulting, incitement to hatred, sexual remarks and any other which does not respect our terms of use !
Sign in to follow this  
Ubrain

 addons PluginMail - ACCESS VERSION | Automatisez les envois

Recommended Posts

VIP

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 

Please login or register to see this link.



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 !
 

Edited by Ubrain

Share this post


Link to post
Share on other sites
Donateur

Salut,

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

Share this post


Link to post
Share on other sites
Resp modo

Sympa, tu devrais ajouter le lien de ce sujet au premier pour que les gens le voit ;) 

Merci du partage

Share this post


Link to post
Share on other sites
VIP

@Pancani
heh, bonne idée, je m'en charge de suite ;) 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...