[AngularJs + Php] Organiser un système automatique d’Emailing dans une application.

angularjslogo-php

Introduction


Dans ce post, je décris mes 2 méthodes pour faire de l’EMAILING avec AngularJs en front end et PHP en back end, attention je ne prétends pas que cela soit les solutions les meilleures, néanmoins je les ait testées fonctionnelles.

C’est assez compliqué à expliquer et je ne prétends pas faire une procédure bien structurée, mais juste un pense bête qui peut inspirer …

email-logo.png

L’Emailing permet d’envoyer un email personnalisé à tous les utilisateurs d’une application ;ou à certains groupes d’utilisateurs d’une application, qui auront été filtré sur la base d’un critère au préalable .

Certains systèmes peuvent être très simples, d’autres très complexes au niveau des critères.

Voici un exemple typique du besoin de faire de l’emailing dans les applications WEB modernes :

‘ Mince le prof de maths est absent demain, il faut que j’envoie un Email à tous les élèves du cours de maths pour qu’ils sachent que demain, il ne sera pas là, vite, je vais dans mon application WEB pour le faire !’

Sommaire :


  1. Technologies employées.
  2. La méthode naïve: faire une boucle dans le Front end.
  3. Filtrer les étudiants à emailer en fonction d’un critère …
  4. La méthode sure: faire une boucle  dans le Back End.
  5. Permettre d’ajouter une pièce jointe à l’emailing.

1. Technologies employées :



  • Le framework angularJs 1.5  pour le front end.
  • Php 7.0 pour gérer notre back-end (C’est le langage Serveur).
  • La librairie phpmailer (A télécharger !), qui va permettre à notre serveur d’envoyer les Emails.
  • Les données sont échangées au format JSON entre le front end et le back end, ce sont des tableaux d’objets JSON normalisés ou alors un objet json unique (En l’occurence : Email destinataire (data.email) et contenu du formulaire ($scope.formData) pour l’exemple 2.)
  • Pour commencer, on peut déjà se baser sur ce très bon tuto en Anglais pour envoyer un seul EMAIL avec la technologie AngularJS/Php

2.La méthode naïve, faire une boucle dans le Front end.


Une méthode naïve avec une boucle angular.forEach directement dans le Front End, qui envoie tour à tour chaque email destinataire et contenu d’email au Back End en PHP …
Pas du tout conseillé, car je pense que cela surcharge forcément à un moment ou à un autre le Back End, cependant, je n’ai pas encore réussi à le surcharger, on peut donc dire que cela fonctionne plus ou moins…Avec 5 personnes  à emailer, cependant, il faut également que cela fonctionne avec 1000 personnes à emailer !

Pourquoi cette méthode est déconseillée : A cause de la concurrence .

Je ne sais pas comment le serveur Apache PHP gère la concurrence , de plus, je n’ai pas réussi à placer un time out dans le la boucle Foreach, ce qui, de toute façon est totalement déconseillé voir impossible selon les témoignages.

L’autre piste étant $q et les promise, mais c’est beaucoup, beaucoup plus compliqué, du coup, je ne le fais pas .

Voici un petit graphique explicatif de la méthode naïve:

methode1.jpg

Dans le controleur AngularJs, je tape cela :

Voici le modèle de données exemple : un tableau d’objets JSON : appelé étudiants


/* Notre modèle de données */
var etudiants = [
{"nom":"Dupont":,"prenom":"Henri","email":"d.h@ifrance.com"},
{"nom":"William":,"prenom":"Thierry","email":"w.t@ifrance.com"},
{"nom":"Farouk":,"prenom":"Aziz","email":"f.a@ifrance.com"}
]

Je crée donc une boucle angular.forEach, qui va envoyer un Email à chaque étudiant automatiquement.


// ENVOYER UN EMAIL A CHAQUE ETUDIANT
angular.forEach(etudiants,function(data){
	var x = angular.copy($scope.formData); // Récupere l objet formData qui contient les données du formulaire
	x.destinataire = data.email;
	$http({
		method  : 'POST',
		url     : 'contact-form.php',
		data    : $.param(x),  //param method from jQuery
		headers : { 'Content-Type': 'application/x-www-form-urlencoded' }  //set the headers so angular passing info as form data (not request payload)
	}).success(function(data){
		console.log(data);
		if (data.success) { //success comes from the return json object
			$scope.submitButtonDisabled = true;
			$scope.resultMessage = data.message;
			$scope.result='bg-success';
		} else {
			$scope.submitButtonDisabled = false;
			$scope.resultMessage = data.message;
			$scope.result='bg-danger';
		}
	});
});

 EXPLICATION DU CODE :

Lorsque la boucle est lancée, chaque ligne(objet JSON) de notre modèle de données étudiants est traitée, parce qu’elle est contenue dans la variable data, lors de chaque itération .

On récupère donc uniquement la variable qui nous intéresse, c’est à dire data.email puis on l’envoye renommée en « destinataire », accompagné de l’objet $scope.formData, qui lui, comprends le contenu du message à envoyer, au backEnd en PHP ! En fait, je place tout ce joli monde (variable destinataire + toutes les variables du formulaire) dans l’objet que j’ai nommé x …

Ensuite, dans la partie success de la fonction $http, on peut remarquer que l’on récupère la réponse du script PHP, si il a marché ou pas !

Maintenant, voici mon fichier contact-form.php sur le Back End, qui reçois chaque email destinataire et le conteun du message à envoyer, puis se sert de la librairie phpmailer pour envoyer les emails ! (Note : le code originel n’a pas été fait par moi, je l’ai juste adapté, ce qui explique les $_POST, dont je ne me sers plus …la flemme de traduire, mais il faudrait)

<?php require_once 'phpmailer/PHPMailerAutoload.php'; if (isset($_POST['inputName']) && isset($_POST['inputEmail']) && isset($_POST['inputSubject']) && isset($_POST['inputMessage'])) {     //check if any of the inputs are empty     if (empty($_POST['inputName']) || empty($_POST['inputEmail']) || empty($_POST['inputSubject']) || empty($_POST['inputMessage'])) {         $data = array('success' => false, 'message' => 'Please fill out the form completely.');
        echo json_encode($data);
        exit;
    } 

    //create an instance of PHPMailer
    $mail = new PHPMailer();
	$mail->IsSMTP();
	$mail->Host = "mailout.one.com ";
	$mail->SMTPAuth   = true;                  // enable SMTP authentication
	$mail->Username   = "nicolas.huleux@nicolash.org"; // SMTP account username
	$mail->Password   = "xxxxx";        // SMTP account password

	$mail->From = $_POST['inputEmail'];
    $mail->FromName = $_POST['inputName'];
    $mail->AddAddress($_POST['destinataire']); //recipient
    $mail->Subject = $_POST['inputSubject'];
    $mail->Body = "Name: " . $_POST['inputName'] . "\r\n\r\nMessage: " . stripslashes($_POST['inputMessage']);

    if (isset($_POST['ref'])) {
        $mail->Body .= "\r\n\r\nRef: " . $_POST['ref'];
    }

    if(!$mail->send()) {
        $data = array('success' => false, 'message' => 'Message could not be sent. Mailer Error: ' . $mail->ErrorInfo);
        echo json_encode($data);
        exit;
    }

    $data = array('success' => true, 'message' => 'Thanks! We have received your message.');
    echo json_encode($data);
} else {
	$data = array('success' => false, 'message' => 'Please fill out the form completely.');
    echo json_encode($data);
}

 EXPLICATION DU CODE :
On voit que la lib est chargée au début du fichier PHP avec la ligne phpmailer/PHPMailerAutoload.php, il faut prendre garde au chemin du script…
Ensuite, et bien on retrouve les noms des variables qui ont été transmises par le script AngularJS, dont le fameux « destinataire »…

Le paramétrage SMTP n’est pas toujours obligatoire, dans ce cas, j’ai activé l’authentification.

Enfin, on ne peut bien sur pas oublier qu’il nous faut notre formulaire qui va nous permettre de taper le message à emailer aux étudiants(je colle celui de l’exemple en Anglais cité plus haut ),ensuite, il faudra donc ajouter notre boucle forEach élaborée plus haut, à la fonction $scope.submit() :

<!DOCTYPE html>
<html>
<head>
    <title>AngularJS Contact Form with Bootstrap and PHPMailer</title>
    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap-theme.min.css">
    <link rel="stylesheet" href="style.css">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js"></script>
    <script src="app.js"></script>
    <script src="controllers.js"></script>
</head>
<body ng-app="contactApp" >
    <div class="vertical-middle">
        <div class="container">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h2 class="panel-title">Contact Form</h2>
                </div>
                <div ng-controller="ContactController" class="panel-body">
                    <form ng-submit="submit(contactform)" name="contactform" method="post" action="" class="form-horizontal" role="form">
                        <div class="form-group" ng-class="{ 'has-error': contactform.inputName.$invalid && submitted }">
                            <label for="inputName" class="col-lg-2 control-label">Name</label>
                            <div class="col-lg-10">
                                <input ng-model="formData.inputName" type="text" class="form-control" id="inputName" name="inputName" placeholder="Your Name" required>
                            </div>
                        </div>
                        <div class="form-group" ng-class="{ 'has-error': contactform.inputEmail.$invalid && submitted }">
                            <label for="inputEmail" class="col-lg-2 control-label">Email</label>
                            <div class="col-lg-10">
                                <input ng-model="formData.inputEmail" type="email" class="form-control" id="inputEmail" name="inputEmail" placeholder="Your Email" required>
                            </div>
                        </div>
                        <div class="form-group" ng-class="{ 'has-error': contactform.inputSubject.$invalid && submitted }">
                            <label for="inputSubject" class="col-lg-2 control-label">Subject</label>
                            <div class="col-lg-10">
                                <input ng-model="formData.inputSubject" type="text" class="form-control" id="inputSubject" name="inputSubject" placeholder="Subject Message" required>
                            </div>
                        </div>
                        <div class="form-group" ng-class="{ 'has-error': contactform.inputMessage.$invalid && submitted }">
                            <label for="inputMessage" class="col-lg-2 control-label">Message</label>
                            <div class="col-lg-10">
                                <textarea ng-model="formData.inputMessage" class="form-control" rows="4" id="inputMessage" name="inputMessage" placeholder="Your message..." required></textarea>
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="col-lg-offset-2 col-lg-10">
                                <button type="submit" class="btn btn-default" ng-disabled="submitButtonDisabled">
                                    Send Message
                                </button>
                            </div>
                        </div>
                    </form>
                    <p ng-class="result" style="padding: 15px; margin: 0;">{{ resultMessage }}</p>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

Ce qui donne dans le navigateur:

angularjs-bootstrap-phpmailer-form.png

Ensuite, par exemple dans l’appli PompeStation : On peut vérifier avec Firebug que 3 emails sont partis lorsque l’on fait de l’emailing :

exempl1.jpg

3. Filtrer les étudiants à emailer en fonction d’un critère .


Toujours dans le cadre de la méthode de la boucle dans le Front End, on peut, avant d’envoyer les emails, filtrer par classe afin de ne choisir que les étudiants en MATHS, par exemple :

Admettons que notre modèle de données ressemble désormais à ça :


/* Notre modèle de données  */
var etudiants = [
{"nom":"Dupont":,"prenom":"Henri","email":"d.h@ifrance.com","classe":"Maths"},
{"nom":"William":,"prenom":"Thierry","email":"w.t@ifrance.com","classe":"Maths"},
{"nom":"Farouk":,"prenom":"Aziz","email":"f.a@ifrance.com","classe":"Français"}
]

Alors, on en déduit qu’il faut filtrer par classe, si l’on veut emailer tous les élèves de la classe de Maths et uniquement eux !
En ce cas, on filtre le modèle de données dans le controleur comme ceci :


var etudiantsDeMaths = etudiants.filter(function(etudiant){
			return(etudiant.classe == "Maths");
		});

Explication du code :
On parcours notre modèle de données etudiants et on « mets » dans le tableau d’objets JSON etudiantsDeMaths seulement les étudiants dont la classe est Maths.

De ce fait, il nous suffit ensuite d’envoyer etudiantsDeMaths à notre boucle vue plus haut dans ce post, qui envoie les emails comme ceci :


// ENVOYER UN EMAIL A CHAQUE ETUDIANT
angular.forEach(etudiantsDeMaths,function(data){
	var x = angular.copy($scope.formData); // Récupere l objet formData qui contient les données du formulaire
	x.destinataire = data.email;
	$http({
		method  : 'POST',
		url     : 'contact-form.php',
		data    : $.param(x),  //param method from jQuery
		headers : { 'Content-Type': 'application/x-www-form-urlencoded' }  //set the headers so angular passing info as form data (not request payload)
	}).success(function(data){
		console.log(data);
		if (data.success) { //success comes from the return json object
			$scope.submitButtonDisabled = true;
			$scope.resultMessage = data.message;
			$scope.result='bg-success';
		} else {
			$scope.submitButtonDisabled = false;
			$scope.resultMessage = data.message;
			$scope.result='bg-danger';
		}
	});
});

4. La méthode sure, faire une boucle FOREACH dans le Back End :

Une méthode qui envoie directement l’intégralité de la liste des emails destinataire avec le message au Back end, puis c’est le back end en PHP qui se charge d’envoyer séparément  chaque emails dans une boucle FOREACH.

Graphique explicatif : 

emailing2.jpg

Les étapes :

  1. Dans le front-end ANGULARJS :
  • Récupérer les Emails des personnes destinataires à Emailer puis les placer dans un tableau:

/* Notre modèle de données */
	var etudiants = [
	{"nom":"Dupont":,"prenom":"Henri","email":"d.h@ifrance.com"},
	{"nom":"William":,"prenom":"Thierry","email":"w.t@ifrance.com"},
	{"nom":"Farouk":,"prenom":"Aziz","email":"f.a@ifrance.com"}
	]

/* CREER LE TABLEAU CONTENANT LES EMAILS */
	var emailsDestinataires = [];
	angular.forEach(etudiants,function(data){
		emailsDestinataires.push(data.email);
	});

    • Récupérer le contenu du message à Emailer à tout le monde et les infos annexes (Email expediteur, Sujet etc …) Tout cela ,  c’est l’objet JSON $scope.formData qui contient tout simplement les variables du formulaire.
      Puis ensuite, il faut coller le tableau de la phase un dans l’objet JSON, pour faire un objet JSON unique qui commprends donc le tableau des emails destinaires.

/* CREER L OBJET COMPRENANT LE FORMULAIRE ET LES EMAILS DESTINATAIRES */
	var x = angular.copy($scope.formData); // Crée une copie autonome des variables du formulaires
	x.emailsDestinataires = emailsDestinataires;  // Ajout le tableau des emails destinatiares à l'objet x

    • Transmettre tout cela dans une requête $http unique au Back End :

/* ENVOYER LE TOUT AU BACK END*/

$http({
		method  : 'POST',
		url     : 'contact-form.php',
		data    : $.param(x),  //param method from jQuery
		headers : { 'Content-Type': 'application/x-www-form-urlencoded' }  //set the headers so angular passing info as form data (not request payload)
	}).success(function(data){
		console.log(data);
		if (data.success) { //success comes from the return json object
			$scope.submitButtonDisabled = true;
			$scope.resultMessage = data.message;
			$scope.result='bg-success';
		} else {
			$scope.submitButtonDisabled = false;
			$scope.resultMessage = data.message;
			$scope.result='bg-danger';
		}
	});

Pour info, voici FIREBUG lorsque je lance un emailing à destination de 2 personnes, on repère bien le tableau emailDestinataires contenu dans l’objet JSON x, contenant les 2 emails(Il pourrait y en avoir 500 !) :

emziling1

2. Dans le Back End PHP appelé contact-form.php

    • Faire une boucle FOREACH qui envoye le contenu du message à chaque email présent dans le tableau des emails destinataires :

<?php require_once 'phpmailer/PHPMailerAutoload.php'; if (isset($_POST['inputName']) && isset($_POST['inputEmail']) && isset($_POST['inputSubject']) && isset($_POST['inputMessage'])) {     //check if any of the inputs are empty     if (empty($_POST['inputName']) || empty($_POST['inputEmail']) || empty($_POST['inputSubject']) || empty($_POST['inputMessage'])) {         $data = array('success' => false, 'message' => 'Please fill out the form completely.');
        echo json_encode($data);
        exit;
    } 

	$emailsDestinataires = $_POST['emailsDestinataires'];

	//create an instance of PHPMailer
    $mail = new PHPMailer();
	$mail->IsSMTP();
	$mail->Host = "smtp.orange.fr";
/* 	$mail->SMTPAuth   = true;                  // enable SMTP authentication
	$mail->Username   = "nicolas.huleux@nicolash.org"; // SMTP account username
	$mail->Password   = "wxxxxx";        // SMTP account password */

	$mail->From = $_POST['inputEmail'];
    $mail->FromName = $_POST['inputName'];

	/* ENVOIE UN EMAIL A CHAQUE DESTINATAIRE CONTENU DANS LE TABLEAU   */
	foreach ($emailsDestinataires as $ad) {
		$mail->AddAddress($ad);
	}

    $mail->Subject = $_POST['inputSubject'];
    $mail->Body = "Name: " . $_POST['inputName'] . "\r\n\r\nMessage: " . stripslashes($_POST['inputMessage']);

	if (isset($_POST['ref'])) {
        $mail->Body .= "\r\n\r\nRef: " . $_POST['ref'];
    }

    if(!$mail->send()) {
        $data = array('success' => false, 'message' => 'Message could not be sent. Mailer Error: ' . $mail->ErrorInfo);
        echo json_encode($data);
        exit;
    }

    $data = array('success' => true, 'message' => 'Thanks! We have received your message.');
    echo json_encode($data);
} else {
	$data = array('success' => false, 'message' => 'Please fill out the form completely.');
    echo json_encode($data);
}

5. Permettre d’ajouter une pièce jointe à l’emailing.


Etape 1 : Ajouter un bouton « Ajouter une pièce jointe au formulaire :

<div class="panel panel-default">
		
		<div class="panel-heading">
			<h2 class="panel-title"><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span> Emailing</h2>
		</div>
		
		<form name="myForm2">
		<div  class="panel-body panel-nico">
				
			
			
			<div class="col-md-12">
				<div class="input-group">
						<span class="input-group-addon" >Nom</span>
						<input class="form-control " type="text" ng-model="formData.inputName" placeholder="Votre Nom" required> </input>
				</div><br>
			</div>
			
			<div class="col-md-12">
				<div class="input-group">
						<span class="input-group-addon" >Email</span>
						<input class="form-control " type="text" ng-model="formData.inputEmail" placeholder="jo@jo.fr" disabled> </input>
				</div><br>
			</div>
			
			<div class="col-md-12">
				<div class="input-group">
						<span class="input-group-addon" >Sujet</span>
						<input class="form-control " type="text" ng-model="formData.inputSubject" placeholder="Sujet du Message" required> </input>
				</div><br>
			</div>
			
		
			
			<div class="col-md-12" >
				<div class="input-group">
				<span class="input-group-addon" >Message</span>
					<textarea ng-model="formData.inputMessage" class="form-control" rows="8" id="inputMessage" name="inputMessage" placeholder="Votre Message..." required></textarea>
				</div><br>
			</div>
			
		
			<div class="col-md-8">
					<div class="input-group">
						<span class="input-group-addon" >Fonction</span>
						<select  class="form-control form-field" ng-model="f" required>
					
							<option value="" >Choisir le groupe à emailer</option>
							<option  value="Pompiste">Pompiste</option>
							<option  value="Barman">Barman</option>
							<option  value="Caissier">Caissier</option>
							<option  value="Comptable">Comptable</option> 	
							<option  value="Commercial">Commercial</option> 	 							
						</select>
					</div><br>
				</div>
				
			<div class="col-md-4">
				<div class="input-group">
					<span class="input-group-addon">Pièce Jointe</span>
					<span class="btn btn-default btn-file">
					<input  class="form-control " type="file" name="file" onchange="angular.element(this).scope().uploadFile(this.files,'uploadPieceJointe.php')" >Choisir une pièce jointe</input>	
					</span>
				</div>
			</div><br>
			
			<div class="col-md-4">
			<a href="{{formData.pieceJointe}}"  target="_blank" >{{formData.pieceJointe |capitalize}}</a> 
			</div><br>
		</div>	
		<div class="panel-footer text-right">
			<div class="form-group">
				<div class="text-right">
					<button ng-click ="myForm2.$valid && submit()" class="btn btn-default" ng-disabled="submitButtonDisabled">
						<span class="glyphicon glyphicon-envelope" aria-hidden="true"></span> Envoyer le Message
					</button>
			</form>
				</div>
			</div>
		</div>
	<p ng-class="result" style="padding: 15px; margin: 0;">{{ resultMessage }}</p>
	</div>

Etape 2 : Gérer le téléchargement de la pièce jointe dans le front end :


/* CHARGEMENT DE FICHIERS SUR LE SERVEUR */
$scope.uploadFile = function(files,destinationPhp) {

	var fd = new FormData();
	//Take the first selected file
	fd.append("file", files[0]);

	var uploadUrl = destinationPhp;
	$http.post(uploadUrl, fd, {
		withCredentials: true,
		headers: {'Content-Type': undefined },
		transformRequest: angular.identity
	}).success(function(data){ 

		if(destinationPhp=='uploadPhotoEmployes.php'){
			notifier.notify('image téléchargée sur le serveur!');
			$scope.intervenant.image = 'img-employes/'+files[0].name;
		}
		if(destinationPhp=='uploadContratEmployes.php'){
			notifier.notify('Fichier téléchargé sur le serveur!');
			$scope.intervenant.contrat = 'contrats-employes/'+files[0].name;
		}
		if(destinationPhp=='uploadPieceJointe.php'){
			notifier.notify('Fichier téléchargé sur le serveur!');
			$scope.formData.pieceJointe = 'piece-jointe/'+files[0].name;
		}

		})
		.error(function(data){
			notifier.notify("Echec du téléchargement sur le serveur");
		});

};

Etape 3 : Gérer le téléchargement sur le serveur avec uploadPieceJointe.php (+ créer le répertoire piece-jointe à la racine de l’app)

<?php if ( !empty( $_FILES ) ) {     $tempPath = $_FILES[ 'file' ][ 'tmp_name' ];     $uploadPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'piece-jointe' . DIRECTORY_SEPARATOR . $_FILES[ 'file' ][ 'name' ];     move_uploaded_file( $tempPath, $uploadPath );     $answer = array( 'answer' => 'File transfer completed' );
    $json = json_encode( $answer );

    echo $json;

} else {

    echo 'No files';

}

?>

Etape 4 : Dans contact-form.php, ajouter $mail->AddAttachment

<?php require_once 'phpmailer/PHPMailerAutoload.php'; if (isset($_POST['inputName']) && isset($_POST['inputEmail']) && isset($_POST['inputSubject']) && isset($_POST['inputMessage'])) {     //check if any of the inputs are empty     if (empty($_POST['inputName']) || empty($_POST['inputEmail']) || empty($_POST['inputSubject']) || empty($_POST['inputMessage'])) {         $data = array('success' => false, 'message' => 'Please fill out the form completely.');
        echo json_encode($data);
        exit;
    } 

	$emailsDestinataires = $_POST['emailsDestinataires'];

	//create an instance of PHPMailer
    $mail = new PHPMailer();
	$mail->IsSMTP();
	/* $mail->Host = "smtp.orange.fr";    */
	 $mail->Host = "send.one.com";
 	$mail->SMTPAuth   = true;                  // enable SMTP authentication
	$mail->Username   = "nicolas.huleux@nicolash.org"; // SMTP account username
	$mail->Password   = "windsurf";        // SMTP account password 

	if($_POST['pieceJointe']){
		$mail->AddAttachment($_POST['pieceJointe'],
		$name = $_POST['pieceJointe'],
		$encoding = 'base64',
		$type = 'application/octet-stream');
	}

	$mail->From = $_POST['inputEmail'];
    $mail->FromName = $_POST['inputName'];

	/* ENVOIE UN EMAIL A CHAQUE DESTINATAIRE CONTENUE DANS LE TABLEAU   */
	foreach ($emailsDestinataires as $ad) {
		$mail->AddAddress($ad);
	}

    $mail->Subject = $_POST['inputSubject'];
    $mail->Body = "Name: " . $_POST['inputName'] . "\r\n\r\nMessage: " . stripslashes($_POST['inputMessage']);

    if (isset($_POST['ref'])) {
        $mail->Body .= "\r\n\r\nRef: " . $_POST['ref'];
    }

    if(!$mail->send()) {
        $data = array('success' => false, 'message' => 'Message could not be sent. Mailer Error: ' . $mail->ErrorInfo);
        echo json_encode($data);
        exit;
    }

    $data = array('success' => true, 'message' => 'Merci les messages ont bien été envoyés.');
    echo json_encode($data);
} else {
	$data = array('success' => false, 'message' => 'Remplissez tous les champs correctement.');
    echo json_encode($data);
}

Publicités