Page 1 sur 1

Script envoie de mail

Posté : 14 août 2016, 12:13
par Shifting
Bonjour,

(Je suis débutant en php)
J'essaye de développer un script dans le but d'envoyer des mails aux personnes dont c'est l'anniversaire.
Jusqu'ici j'ai réussi à me connecter à la base de donnée et afficher le nom des personnes concernées.
Maintenant, il me reste à configurer l'envoie du mail mais je ne sais pas comment faire. Je sais qu'il faut utiliser la fonction mail mais je n'y arrive pas.

Voilà mon script :
<?php

$date_jour = date("d/m");
     
// Déclaration des paramètres de connexion
$host = localhost;
$user = ' ';
$bdd = ' ';
$passwd  = ' ';
 
// Connexion au serveur
mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur:" . mysql_error());
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees: " . mysql_error());
 
$retour = mysql_query('SELECT nom, prenom, email FROM Anniversaire WHERE MONTH(dateanniv) = MONTH(CURRENT_DATE) AND DAY(dateanniv) = DAY(CURRENT_DATE)');
while ($data = mysql_fetch_assoc($retour))
{
	//On affiche les informations de l'enregistrement en cours
	echo '<b>'.$data['nom'].' '.$data['prenom'].' '.$data['email'].'</b>';
}

//On ferme la connexion à MySQL
mysql_close();


?>
Pouvez-vous m'aider ?

Re: Script envoie de mail

Posté : 14 août 2016, 14:31
par Naroth
Bonjour,

Je te conseille d'utiliser la classe phpmailer qui te simplifie grandement les choses


Un exemple d'utilisation :
<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = '[email protected]';                 // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress('[email protected]', 'Joe User');     // Add a recipient
$mail->addAddress('[email protected]');               // Name is optional
$mail->addReplyTo('[email protected]', 'Information');
$mail->addCC('[email protected]');
$mail->addBCC('[email protected]');

$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}
?>

Re: Script envoie de mail

Posté : 14 août 2016, 14:54
par @rthur
Bonjour,

Part surtout d'une page blanche et essaye de reproduire soit l'exemple de phpmailer donné par Naroth soit de l'exemple de la documentation de la fonction mail() pour envoyer 1 seul mail (à toi) :
http://fr.php.net/mail

Une fois que tu auras réussi, tu auras juste à ajouter cette portion de code dans ta boucle en rendant dynamique l'e-mail et le nom.

Re: Script envoie de mail

Posté : 14 août 2016, 17:03
par Shifting
Bonjour,

Merci de vos conseils.
J'ai dit utilisé la fonction mail() de php d'abord seul (fonctionne) puis en l'incluant dans la boucle avec en destinataire moi (fonctionne)

Dernière question : Comment puis-je envoyer le mail aux adresses sélectionnées dans la base de données ?

Merci à vous

Re: Script envoie de mail

Posté : 14 août 2016, 17:20
par or 1
en mettant $data['email'] comme destinataire de l'email dans la boucle.

Re: Script envoie de mail

Posté : 14 août 2016, 17:44
par Shifting
Super, ça a fonctionné!

Seulement j'aimerais inclure les $data['nom'] et $data['prenom'] dans le message du mail.
J'ai essayé comme ceci mais message d'erreur : Parse error: syntax error, unexpected '$data' (T_VARIABLE) in... on line 24
//Boucle envoie mail
while ($data = $resultat->fetch_assoc())
	{ 
     $to      = $data['email'];
     $subject = 'Bon anniversaire';
     $message = 'Bonjour ' $data['nom'] ' ' $data['prenom'] '! Toute la team vous souhaite un très bon anniversaire!';
     $headers = 'From: [email protected]' . "\r\n" .
     'Reply-To: [email protected]' . "\r\n" .
     'X-Mailer: PHP/' . phpversion();
 
     mail($to, $subject, $message, $headers);
 	}

Re: Script envoie de mail

Posté : 14 août 2016, 18:19
par Naroth
Il manquerait pas les points de concaténation ?
$message = 'Bonjour '. $data['nom'].' '. $data['prenom'] .'! Toute la team vous souhaite un très bon anniversaire!';