Documentation EXMail 2
Sommaire :
Ajout de plusieurs destinataires
Format du mail (Documentation non disponible)
Configuration From et FromName
Les templates (Documentation non disponible)
Le multilanguage (Documentation non disponible)
Le cryptogramme (Documentation non disponible)
Exemples (Non disponible)
Préambule
Pour utiliser ce script il est important d’avoir quelques notions en PHP, en XHTML et CSS. Veuillez noter que suivant votre niveau, certes parties avancées de cette documentation ne vous seront pas « accessibles ». Nous ne ferons aucun support sur toute modification du script pour l’amener à une utilisation qui ne lui est pas destinée. Votre serveur devra disposer d’au moins la version 5 de PHP ainsi que la librairie GD pour pouvoir utiliser le cryptogramme visuel (Facultatif).
Installation
L’installation est des plus simple, envoyez le contenu de l’archive que vous avez téléchargé sur votre serveur via votre compte FTP. Si vous souhaitez utiliser la fonctionnalité d’envoi de pièces jointes du script, veillez à ce que le répertoire « upload » ait les droits nécessaires en écriture.
Configuration rapide
La base pour un formulaire de contact est composé de trois champs, un champ « email », un champ « nom » et un champ « message ». Voici le code pour faire ceci :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>EXmail 2.0</title> <link rel="stylesheet" href="/chemin/vers/template/default/style.css" type="text/css" /> </head> <body> <?php // On inclu la classe EXmail 2 require('/chemin/vers/Exmail2.class.php'); try{ // On instancie l'objet EXmail en lui précisant l'adresse du destinataire du mail $mail = new Exmail2('votre_adresse@domaine.com'); // On précise le sujet de l'email $mail->setSubject('Nouveau contact !'); // On ajoute un champs de type "input text" qui s'appel "Nom :" // Si ce champs est vide on déclanche une erreur $mail->addInput('text','Nom :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre nom' ) ) ); // On ajoute un champs de type "input text" qui s'appel "Email :" // Si ce champs est vide ou que l'adresse n'est pas valide on déclanche une erreur $mail->addInput('text','Email :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner le champ email' ), array( 'function'=>Exmail2::IS_EMAIL, 'value'=>false, 'message'=> 'L\'adresse email n\'est pas valide' ) ) ); // On ajoute un champ de type Textarea qui s'appel "Message :" // Si ce champs est vide on déclanche une erreur $mail->addTextarea('Message :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre message' ) ) ); // Affichage du formulaire echo $mail->printForm(); }catch(MyException $e){ echo $e; } ?> </body> </html>
Vous avez réussi à envoyer votre première prise de contact ? Parfait, vous avez pu remarquer que le nom de l’expéditeur est « no-reply » et que l’adresse email de l’expéditeur est « no-reply@none.com ». Si vous voulez que le nom soit celui du champ « Nom », et que l’adresse de l’expéditeur soir l’adresse saisie, modifiez le code comme ceci :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>EXmail 2.0</title> <link rel="stylesheet" href="/chemin/vers/template/default/style.css" type="text/css" /> </head> <body> <?php // On inclu la classe EXmail 2 require('/chemin/vers/Exmail2.class.php'); try{ // On instancie l'objet EXmail en lui précisant l'adresse du destinataire du mail $mail = new Exmail2('votre_adresse@domaine.com'); // On précise le sujet de l'email $mail->setSubject('Nouveau contact !'); // On ajoute un champs de type "input text" qui s'appel "Nom :" // Si ce champs est vide on déclanche une erreur $nom = $mail->addInput('text','Nom :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre nom' ) ) ); // On ajoute un champs de type "input text" qui s'appel "Email :" // Si ce champs est vide ou que l'adresse n'est pas valide on déclanche une erreur $email = $mail->addInput('text','Email :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner le champ email' ), array( 'function'=>Exmail2::IS_EMAIL, 'value'=>false, 'message'=> 'L\'adresse email n\'est pas valide' ) ) ); // On ajoute un champ de type Textarea qui s'appel "Message :" // Si ce champs est vide on déclanche une erreur $mail->addTextarea('Message :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre message' ) ) ); // On associe le "From" du mail au champs "Email :" $mail->setFrom($email); // On associe le "FromName" du mail au champs "Nom :" $mail->setFromName($nom); // Affichage du formulaire echo $mail->printForm(); }catch(MyException $e){ echo $e; } ?> </body> </html>
Ajoutons maintenant un petit cryptogramme visuel pour éviter d’avoir des petits problèmes de spam :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>EXmail 2.0</title> <link rel="stylesheet" href="/chemin/vers/template/default/style.css" type="text/css" /> </head> <body> <?php // On inclu la classe EXmail 2 require('/chemin/vers/Exmail2.class.php'); try{ // On instancie l'objet EXmail en lui précisant l'adresse du destinataire du mail $mail = new Exmail2('votre_adresse@domaine.com'); // On précise le sujet de l'email $mail->setSubject('Nouveau contact !'); // On ajoute un champs de type "input text" qui s'appel "Nom :" // Si ce champs est vide on déclanche une erreur $nom = $mail->addInput('text','Nom :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre nom' ) ) ); // On ajoute un champs de type "input text" qui s'appel "Email :" // Si ce champs est vide ou que l'adresse n'est pas valide on déclanche une erreur $email = $mail->addInput('text','Email :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner le champ email' ), array( 'function'=>Exmail2::IS_EMAIL, 'value'=>false, 'message'=> 'L\'adresse email n\'est pas valide' ) ) ); // On ajoute un champ de type Textarea qui s'appel "Message :" // Si ce champs est vide on déclanche une erreur $mail->addTextarea('Message :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre message' ) ) ); // Ajout du cryptogramme $mail->addCryptogramme('Recopiez le contenu de l\'image','Le cryptogramme n\'a pas été correctement saisi !'); // On associe le "From" du mail au champs "Email :" $mail->setFrom($email); // On associe le "FromName" du mail au champs "Nom :" $mail->setFromName($nom); // Affichage du formulaire echo $mail->printForm(); }catch(MyException $e){ echo $e; } ?> </body> </html>
Voilà pour la prise en main, vous avez un aperçu général du fonctionnement du script, et j’espère que vous avez compris dans les grandes lignes son principe de fonctionnement. Si vous voulez ajouter des champs, et savoir quelles sont les paramètres possibles, rendez vous dans la configuration avancée.
Configuration avancée
Ajout de plusieurs destinataires
Pour que le script fonctionne, au minimum 1 adresse email de destination est nécessaire. Celle-ci est à préciser quand on instancie l’objet par exemple :
$mail = new EXmail2('adresse@domaine.com');
Vous pouvez ajouter d’autres adresses en appelant la méthode addAddress() :
$mail->addAddress('unadresse@domaine.com');
Configuration SMTP
Si la fonction mail (utilisez par défaut par le script) n’est pas disponible chez votre hébergeur, vous pouvez passer par un serveur SMTP via la méthode setSmtpConfig()
$mail->setSmtpConfig($host,$login = null,$pass = '',$port = 25); // L'argument $host est obligatoire // Facultatif : $login --> Identifiant de connexion au serveur smtp // Facultatif : $pass --> Mot de passe de connexion // Facultatif : $port --> Port de connexion, par défaut 25 // Exemple pour le SMTP de Free $mail->setSmtpConfig('smtp.free.fr'); // Exemple avec identification $mail->setSmtpConfig('smtp.domaine.com','toto','mdp_toto');
Ajout d’un champ Input
Pour ajouter un champ de type « Input », vous devrez utiliser la méthode addInput(). Il est à noter que les champs vont appraître dans l’ordre que vous allez les définir.
$mail->addInput($type,$designation,$default = '',$class='',$verification = array()); // $type --> Actuellement seul le type 'text' est possible // $designation --> Chaîne de caractères qui va apparaître devant le champ // Facultatif : $default --> Valeur par défaut du champ // Facultatif : $class --> Nom de la class CSS du champ // Facultatif : $verification --> Déclencheur d'erreur (Voir sections "Les déclencheurs d'erreurs") // Exemple d'ajout d'un champ "Prénom", qui déclenchera une erreur s'il est vide $mail->addInput('text','Prénom :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre prénom' ) ) );
Ajout d’un champ Textarea
Pour ajouter un champ de type « Textarea », vous devrez utiliser la méthode addTextarea(). Il est à noter que les champs vont appraître dans l’ordre que vous allez les définir.
$mail->addTextarea($designation,$default = '',$class='',$verification = array()); // $designation --> Chaîne de caractères qui va apparaître devant le champ // Facultatif : $default --> Valeur par défaut du champ // Facultatif : $class --> Nom de la class CSS du champ // Facultatif : $verification --> Déclencheur d'erreur (Voir sections "Les déclencheurs d'erreurs") // Exemple d'ajout d'un champ "Message", qui déclenchera une erreur s'il est vide $mail->addTextarea('text','Votre message :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre message' ) ) );
Ajout d’un champ Select
Pour ajouter un champ de type « Select », vous devrez utiliser la méthode addSelect(). Il est à noter que les champs vont appraître dans l’ordre que vous allez les définir.
$mail->addSelect($designation,$values,$default = '',$class='',$verification = array()); // $designation --> Chaîne de caractères qui va apparaître devant le champ // $values --> Tableau contenant les données du champ Select // Facultatif : $default --> Valeur par défaut du champ (Cela doit être une clé du tableau $values) // Facultatif : $class --> Nom de la class CSS du champ // Facultatif : $verification --> Déclencheur d'erreur (Voir sections "Les déclencheurs d'erreurs") // Exemple d'ajout d'un champ "Votre âge :" $mail->addSelect('Votre âge :',range(1,99));
Ajout d’un champ Checkbox
Pour ajouter un champ de type « Checkbox », vous devrez utiliser la méthode addCheckbox(). Il est à noter que les champs vont appraître dans l’ordre que vous allez les définir.
$mail->addCheckbox($designation,$values,$class='',$verification = array()); // $designation --> Chaîne de caractères qui va apparaître devant le champ // $values --> Tableau contenant les données du champ Select // Facultatif : $class --> Nom de la class CSS du champ // Facultatif : $verification --> Déclencheur d'erreur (Voir sections "Les déclencheurs d'erreurs") // Exemple d'ajout d'un champ "Vos passions :" $mail->addCheckbox('Vos passions :',array('L\'informatique','Le sport','Les jeux vidéo','La télé'));
Ajout d’un champ Radio
Pour ajouter un champ de type « Radio », vous devrez utiliser la méthode addRadio(). Il est à noter que les champs vont appraître dans l’ordre que vous allez les définir.
$mail->addRadio($designation,$values,$default = '',$class='',$verification = array()); // $designation --> Chaîne de caractères qui va apparaître devant le champ // $values --> Tableau contenant les données du champ Select // Facultatif : $default --> Valeur par défaut du champ (Cela doit être une clé du tableau $values) // Facultatif : $class --> Nom de la class CSS du champ // Facultatif : $verification --> Déclencheur d'erreur (Voir sections "Les déclencheurs d'erreurs") // Exemple d'ajout d'un champ "Vous êtes :", avec comme valeur par défaut la valeur "0" ==> Célibataire $mail->addRadio('Vous êtes :',array('Célibataire','En couple','Marié'),0);
Ajout d’un champ Upload
Pour ajouter un champ de type « Upload », vous devrez utiliser la méthode addUpload(). Il est à noter que les champs vont appraître dans l’ordre que vous allez les définir.
$mail->addUpload($designation,$class='',$obligatory = false,$removed = true,$extentions = array()); // $designation --> Chaîne de caractères qui va apparaître devant le champ // Facultatif : $class --> Nom de la class CSS du champ // Facultatif : $obligatory --> Défini si le champ doit être obligatoire (Par défaut non) // Facultatif : $removed --> Défini si les fichiers joints doivent être supprimés du répertoire "upload" (Par défaut oui) // Facultatif : $extentions --> Liste des extentions autorisées (Par défaut toutes) // Exemple d'ajout d'un champ "Image :" obligatoire $mail->addUpload('Image :','',true,true,array('jpg','png','gif','bmp'));
Ajout d’un Cryptogramme
Pour ajouter un Cryptogramme, vous devrez utiliser la méthode addCryptogramme(). Il est à noter que les champs vont appraître dans l’ordre que vous allez les définir.
$mail->addCryptogramme($designation,$message,$class = ''); // $designation --> Chaîne de caractères qui va apparaître au survol de l'image par défaut // $message --> Message d'erreur si le cryptogramme est mal renseigné // Facultatif : $class --> Nom de la class CSS du champ // Exemple $mail->addCryptogramme('Recopiez le contenu de l\'image','Le cryptogramme n\'a pas été correctement saisi !');
Les déclencheurs d’erreurs
Pour chaque champ que vous allez ajouter (Sauf le champ Upload), vous pouvez définir un déclencheur d’erreur. Le déclencheur utilise une fonction PHP qui prendra en paramètre la valeur du champ et va comparer le résultat de la fonction avec la valeur définie. Si la condition est vérifier, le script va déclencher une erreur, et afficher le message d’erreur défini. Voici quelques exemples :
// On déclenche une erreur si le champ est vide $mail->addInput('text','Email :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre email' ) ) ); // On peut ajouter autant de déclencheur que l'on veut sur chaque champ // On va déclencher une erreur, si le champ est vide ou si l'adresse email est invalide $mail->addInput('text','Email :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre email' ), array( 'function'=>Exmail2::IS_EMAIL, 'value'=>false, 'message'=> 'L\'adresse email n\'est pas valide' ) ) ); // Autre exemple on va déclencher une erreur si le champ fait plus de 20 caractères $mail->addInput('text','Nom :','','',array( array( 'function'=>'strlen', 'operator'=>'>', 'value'=>20, 'message'=>'Votre nom doit faire moins de 20 caractères' ) ) );
A noter que si l’opérateur de comparaison (operator) n’est pas défini, il vaut par défaut « === ». Seules les fonctions avec un seul paramètre peuvent être utilisées. A noter que « empty » n’est pas considéré comme une fonction en PHP, c’est pour cette raison que vous devrez utiliser Exmail2::IS_EMPTY pour vérifier si un champ est vide. Si vous voulez faire des déclencheurs « complexes » vous devrez définir vos propres fonctions, par exemple :
// On souhaite vérifier qu'un numéro de téléphone est valide et que le champ n'est pas vide function telValide($numero){ if(!preg_match('`^0[1-68][0-9]{8}$`',$numero)) return false; return true; } $mail->addInput('text','Téléphone :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre numéro' ), array( 'function'=>'telValide', 'value'=>false, 'message'=>'Veuillez renseigner un numéro valide' ) ) );
Configuration From et FromName
Vous pouvez définir les attributs « From » et « FromName » de votre email en fonction de la valeur d’un champ. Sachez que chaque méthode d’ajout d’un champ renvoit un identifiant, qui pourra être utiliser dans ce cas par exemple.
$nom = $mail->addInput('text','Nom :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner votre nom' ) ) ); // On ajoute un champs de type "input text" qui s'appel "Email :" // Si ce champs est vide ou que l'adresse n'est pas valide on déclanche une erreur $email = $mail->addInput('text','Email :','','',array( array( 'function'=>Exmail2::IS_EMPTY, 'value'=>true, 'message'=>'Veuillez renseigner le champ email' ), array( 'function'=>Exmail2::IS_EMAIL, 'value'=>false, 'message'=> 'L\'adresse email n\'est pas valide' ) ) ); // On associe le "From" du mail au champs "Email :" $mail->setFrom($email); // On associe le "FromName" du mail au champs "Nom :" $mail->setFromName($nom);
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>EXmail 2.0</title>
<link rel="stylesheet" href="/chemin/vers/template/default/style.css" type="text/css" />
</head>
<body>
<?php
// On inclu la classe EXmail 2
require('/chemin/vers/Exmail2.class.php');
try{
// On instancie l'objet EXmail en lui précisant l'adresse du destinataire du mail
$mail = new Exmail2('votre_adresse@domaine.com');
// On précise le sujet de l'email
$mail->setSubject('Nouveau contact !');
// On ajoute un champs de type "input text" qui s'appel "Nom :"
// Si ce champs est vide on déclanche une erreur
$mail->addInput('text','Nom :','','',array(
array(
'function'=>Exmail2::IS_EMPTY,
'value'=>true,
'message'=>'Veuillez renseigner votre nom'
)
)
);
// On ajoute un champs de type "input text" qui s'appel "Email :"
// Si ce champs est vide ou que l'adresse n'est pas valide on déclanche une erreur
$mail->addInput('text','Email :','','',array(
array(
'function'=>Exmail2::IS_EMPTY,
'value'=>true,
'message'=>'Veuillez renseigner le champ email'
),
array(
'function'=>Exmail2::IS_EMAIL,
'value'=>false,
'message'=> 'L\'adresse email n\'est pas valide'
)
)
);
// On ajoute un champ de type Textarea qui s'appel "Message :"
// Si ce champs est vide on déclanche une erreur
$mail->addTextarea('Message :','','',array(
array(
'function'=>Exmail2::IS_EMPTY,
'value'=>true,
'message'=>'Veuillez renseigner votre message'
)
)
);
// Affichage du formulaire
echo $mail->printForm();
}catch(MyException $e){
echo $e;
}
?>
</body>
</html>

