pat@mail: sudo crontab -e
Modifier: # envoi email par email automatiquement pour les journées portes ouvertes 2025 afin de ne pas être considéré comme du spam #*/3 * * * * /usr/bin/php8.3 /var/www/html/hujiaoquan/mailing/send_pub_formateur_email.php >> /var/www/html/Mgt_log/log_mailing.txt 2>&1 # envoi email par email automatiquement pour les journées portes ouvertes 2026 afin de ne pas être considéré comme du spam #*/3 * * * * /usr/bin/php8.3 /var/www/html/decouverte/mailing/send_pub_formateur_email.php >> /var/www/html/Mgt_log/log_mailing.txt 2>&1
Les résultats de l'envoi des emails se situent: '/var/www/html/Mgt_log/log_mailing.txt' ATTENTION: Veuillez nettoyer le fichier log
Commande MYSQL: UPDATE `decouverte_ateliers` SET `verouillage`='locked' WHERE `verouillage`='unlocked';
La table sera mise à jour pour se préparer à envoyer des emails de manière automatique toutes les 3 minutes afin d'envoyer le programme: Commande MYSQL: UPDATE `decouverte_participants` SET `actif`='no' WHERE `actif`='yes';
Il sera localisé via ce path et enregistré dans : 'webmaster6.php' sous: $datePattern = "/var/www/html/hujiaoquan/pdf/Journees decouvertes de mai 2025.pdf"; e.i (2026): $datePattern = "/var/www/html/hujiaoquan/pdf/Journees decouvertes de mai 2026.pdf";
ATTENTION: Photos et PATH à modifier: src='https://www.hujiaoquan.be/wp-content/uploads/journee_decouverte_1.png' alt='Photo 1' style='max-width:100%; height:auto;' src='https://www.hujiaoquan.be/wp-content/uploads/journee_decouverte_2.png' alt='Photo 2' style='max-width:100%; height:auto;' e.i (2026): src='https://www.decouverte.hujiaoquan.be/wp-content/uploads/journee_decouverte_1.png' alt='Photo 1' style='max-width:100%; height:auto;' src='https://www.decouverte.hujiaoquan.be/wp-content/uploads/journee_decouverte_2.png' alt='Photo 2' style='max-width:100%; height:auto;'
CODE D'ECHAPPEMENT: Si tu veux afficher des balises HTML comme du texte dans cette balise, sans qu'elles ne soient interprétées par le navigateur (donc désactiver leur effet), tu dois échapper les caractères spéciaux, notamment comme ci-dessous
CODE DU FICHIER du fichier '/var/www/html/hujiaoquan/mailing/send_pub_formateur_email.php':
e.i (2026):
'/var/www/html/decouverte/mailing/send_pub_formateur_email.php':
CODE PHP:
include('mysqloverssh2.php');
// Active le debug à 1 pour afficher des messages
$debug = 1;
// 2 pour test avec nathalie
// 1 pour test avec patrick
// "" en production
$test = "";
date_default_timezone_set('Europe/Brussels');
$datum = date("Y-m-d H:i:s");
$sql = "SELECT * FROM `decouverte_referend` WHERE `email` <> 'xxxx@gmail.com' AND `check_email` = 'no' LIMIT 1;";
$result = $db->query($sql);
if ($row = $result->fetch_assoc()) {
if($test =="1"){
$nom = "Halluent";
$prenom = "Patrick";
$to = "fa214292@skynet.be";
$sexe = "M";
$from = "kwetu.webmaster@yogakwetu.be";
}else if($test =="2"){
$nom = "Ortiz";
$prenom = "Nathalie";
$to = "nathalie.ortiz.1969@gmail.com";
$sexe = "F";
$from = "kwetu.webmaster@yogakwetu.be";
}else{
$nom = ucfirst($row['nom']);
$prenom = ucfirst($row['prenom']);
$to = $row['email'];
$sexe = ucfirst($row['sexe']);
$from = "kwetu.webmaster@yogakwetu.be";
}
/** Construction du message **/
$subject = "Espace mieux être KWETU : Modalités des journées découvertes du vendredi 9 mai et samedi 10 mai 2025";
if ($sexe == "M") {
$htmlMessage = "<p>Bonjour cher {$prenom} {$nom}, </p>";
} elseif ($sexe == "F") {
$htmlMessage = "<p>Bonjour chère {$prenom} {$nom}, </p>";
} else {
$htmlMessage = "<p>Bonjour {$prenom} {$nom}, </p>";
}
$htmlMessage = "
<!DOCTYPE html>
<html lang='fr'>
<head>
<meta charset='UTF-8'>
<title>kwetu - Journées portes ouvertes 2025</title>
</head>
<body style='font-family: Arial, sans-serif; color: #333;'>
{$htmlMessage}
<p></p>
<p>Vous trouverez en pièce jointe le détail des ateliers proposés lors des journées découvertes de l'espace mieux être KWETU ainsi que les modalités pour vous y inscrire.</p>
<p></p>
<p>Voici un aperçu en images :</p>
<p><img src='https://www.hujiaoquan.be/wp-content/uploads/journee_decouverte_1.png' alt='Photo 1' style='max-width:100%; height:auto;'></p>
<p><img src='https://www.hujiaoquan.be/wp-content/uploads/journee_decouverte_2.png' alt='Photo 2' style='max-width:100%; height:auto;'></p>
<p></p>
<p>Cordialement,</p>
<p>Nathalie Ortiz</p>
<p>GSM: <a href='tel:+32476693775' style='color: #007bff; text-decoration: none;'>+32 476 69 37 75</a></p>
</body>
</html>
";
/** Envoi d'email avec pièce jointe **/
$file = "/var/www/html/hujiaoquan/pdf/Journees decouvertes de mai 2025.pdf";
if (!file_exists($file)) {
if ($debug) die("Erreur : le fichier n'existe pas !\n");
}
$file_content = file_get_contents($file);
$file_encoded = chunk_split(base64_encode($file_content));
$boundary = md5(uniqid(time()));
$headers = [
"MIME-Version: 1.0",
"From: $from",
"Reply-To: $from",
"Content-Type: multipart/mixed; boundary=\"$boundary\""
];
$body = "--$boundary\r\n";
$body .= "Content-Type: multipart/alternative; boundary=\"alt-$boundary\"\r\n\r\n";
// Partie texte
$body .= "--alt-$boundary\r\n";
$body .= "Content-Type: text/plain; charset=UTF-8\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$body .= strip_tags($htmlMessage) . "\r\n\r\n";
// Partie HTML
$body .= "--alt-$boundary\r\n";
$body .= "Content-Type: text/html; charset=UTF-8\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$body .= $htmlMessage . "\r\n\r\n";
$body .= "--alt-$boundary--\r\n\r\n";
// Pièce jointe
$body .= "--$boundary\r\n";
$body .= "Content-Type: application/pdf; name=\"" . basename($file) . "\"\r\n";
$body .= "Content-Disposition: attachment; filename=\"" . basename($file) . "\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n\r\n";
$body .= $file_encoded . "\r\n";
$body .= "--$boundary--";
// Envoi du mail
$mail_sent = mail($to, $subject, $body, implode("\r\n", $headers));
if ($mail_sent) {
if ($debug) echo "✅ Email envoyé avec succès à $to\n";
if($test===""){
$sql2 = "UPDATE `decouverte_referend` SET `check_email`='yes'
WHERE `nom`= '" . $nom . "' AND `prenom`='" . $prenom . "';";
if ($db->query($sql2) === TRUE) {
if ($debug) echo "✅ Mise à jour réussie pour {$prenom} {$nom}\n";
if ($debug) echo "✅ Timestamp de l'envoi de l'email {$datum}\n\n";
} else {
if ($debug) echo "❌ Erreur lors de la mise à jour : " . $db->error . "\n\n";
}
}else{
if ($debug) echo "✅ Envoi de test réussi pour {$prenom} {$nom}\n";
if ($debug) echo "✅ Timestamp de l'envoi de l'email {$datum}\n\n";
}
} else {
if ($debug) echo "❌ Erreur lors de l'envoi de l'email à $to\n\n";
}
}
pour l'index : id=388 ==> nom:'Aaa Test' prenom:'Envoi Email' = référent de test Commande MYSQL: UPDATE `decouverte_referend` SET `check_email`='no' WHERE `id`='388'; Si le test est concluant et que l'emaila été envoyé, passer au point suivant il est possible de vérifier le résultat de l'envoi via: '/var/www/html/Mgt_log/log_mailing.txt'
Commande MYSQL: UPDATE `decouverte_referend` SET `check_email`='no' WHERE `check_email`='yes';
contenu du fichier 'webmaster1.php' et y remplacer: année, jour et les dates echo 'Decouvertes de l\'espace mieux etre du 9 au 10 mai 2025'; e.i (2026): echo 'Decouvertes de l\'espace mieux etre du 8 au 9 mai 2026';
contenu du fichier 'webmaster2.php' et y remplacer: année, jour et les dates echo 'Decouvertes de l\'espace mieux etre du 9 au 10 mai 2025'; e.i (2026): echo 'Decouvertes de l\'espace mieux etre du 8 au 9 mai 2026';
contenu du fichier 'webmaster3.php' $datePattern = '%2025-05%'; e.i (2026): $datePattern = '%2026-05%';
contenu du fichier 'webmaster4.php' remplacer: année, jour et les dates <option value=05/09/2025>Vendredi 05/09/2025</option>\n <option value=05/10/2025>Samedi 05/10/2025</option>\n e.i (2026): <option value=05/08/2026>Vendredi 05/08/2026</option>\n <option value=05/09/2026>Samedi 05/09/2026</option>\n
contenu du fichier 'webmaster5.php' $datePattern = "Espace mieux être KWETU : Détails de vos prestations pour les journées découvertes du vendredi 9 mai et samedi 10 mai 2025"; e.i (2026): $datePattern = "Espace mieux être KWETU : Détails de vos prestations pour les journées découvertes du vendredi 8 mai et samedi 9 mai 2026";
contenu du fichier 'webmaster6.php' $datePattern = "/var/www/html/hujiaoquan/pdf/Journees decouvertes de mai 2025.pdf"; e.i (2026): $datePattern = "/var/www/html/decouverte/pdf/Journees decouvertes de mai 2026.pdf";
/var/www/html/hujiaoquan/decouverte/index100.php' e.i (2026): /var/www/html/decouverte/index100.php'
pat@mail: sudo crontab -e # envoi email par email automatiquement pour les journées portes ouvertes 2025 avec d'être considéré comme du spam #*/3 * * * * /usr/bin/php8.3 /var/www/html/hujiaoquan/mailing/send_pub_formateur_email.php >> /var/www/html/Mgt_log/log_mailing.txt 2>&1 # envoi email par email automatiquement pour les journées portes ouvertes 2026 afin de ne pas être considéré comme du spam */3 * * * * /usr/bin/php8.3 /var/www/html/decouverte/mailing/send_pub_formateur_email.php >> /var/www/html/Mgt_log/log_mailing.txt 2>&1
Création de la table lié au crontab:
CREATE TABLE cron_jobs (
id INT AUTO_INCREMENT PRIMARY KEY,
job_name VARCHAR(255) NOT NULL,
is_active TINYINT(1) DEFAULT 1, -- 1 pour actif, 0 pour inactif
last_run DATETIME
);
Insérer le job à monitored:
INSERT INTO cron_jobs (job_name, is_active, last_run)
VALUES ('send_email_remerciements', 1, NULL);
e.i: pour 'send_pub_formateur_email'
INSERT INTO cron_jobs (job_name, is_active, last_run)
VALUES ('send_pub_formateur_email', 0, NULL);
Vérifier l'état du cron job dans votre script PHP :
// Connexion à la base de données
$db = mysqli_connect("localhost", "phpmyadmin", "s5123", "phpmyadmin");
if (!$db) {
die("❌ Erreur de connexion à la base de données : " . mysqli_connect_error());
}
// Vérification de l'état du cron job
$query = "SELECT is_active FROM cron_jobs WHERE job_name = 'send_email_remerciements'";
$result = mysqli_query($db, $query);
if ($result) {
$row = mysqli_fetch_assoc($result);
$is_active = $row['is_active'];
if ($is_active == 1) {
// Si le job est actif, procéder à l'exécution du cron job
echo "Le job est actif, exécution du cron job...\n";
// (Placez ici votre logique d'envoi d'e-mails)
} else {
// Si le job est inactif, ne pas exécuter le cron job
echo "Le job est inactif, aucune action n'est effectuée.\n";
}
} else {
echo "❌ Erreur lors de la vérification du statut du cron job.\n";
}
mysqli_close($db);
Mise à jour du statut du cron job : //desactiver UPDATE cron_jobs SET is_active = 0 WHERE job_name = 'send_email_reminders'; -- Désactive le job // activer UPDATE cron_jobs SET is_active = 1 WHERE job_name = 'send_email_reminders'; -- Active le job
Exécution du cron job avec crontab : */3 * * * * /usr/bin/php8.3 /var/www/html/decouverte/mailing/send_email_remerciement_script.php >> /var/www/html/Mgt_log/log_mailing.txt 2>&1
send_email_remerciement_script.php – Exécution conditionnelle du cron + envoi d'un email par minute
// Configuration de la base de données
$db = mysqli_connect("localhost", "phpmyadmin", "s5123", "phpmyadmin");
if (!$db) {
die("❌ Erreur de connexion à la base de données : " . mysqli_connect_error());
}
// Vérifier si le cron est actif dans la table
$check_sql = "SELECT is_active FROM cron_jobs WHERE job_name = 'send_email_reminders' LIMIT 1";
$check_result = mysqli_query($db, $check_sql);
$active = 0;
if ($check_result && mysqli_num_rows($check_result) > 0) {
$active = (int)mysqli_fetch_assoc($check_result)['is_active'];
}
if ($active !== 1) {
echo "⏹️ Cron désactivé. Fin du script.\n";
exit;
}
// Préparer l'envoi d’un email
$from = "kwetu.webmaster@yogakwetu.be";
$subject = "KWETU – Merci pour votre présence aux journées découvertes !";
$sql = "
SELECT
dr.nom,
dr.prenom,
MAX(dp.email) AS email
FROM
decouverte_referend dr
LEFT JOIN
decouverte_participants dp
ON dr.nom = dp.nom AND dr.prenom = dp.prenom AND dp.actif = 'yes'
WHERE
dr.remerciement = 'no' AND dp.atelier_paye <> ''
GROUP BY
dr.nom, dr.prenom
ORDER BY
dr.nom ASC
LIMIT 1
";
$result = mysqli_query($db, $sql);
if (!$result || mysqli_num_rows($result) === 0) {
echo "📭 Aucun email à envoyer.\n";
exit;
}
$row = mysqli_fetch_assoc($result);
$prenomx = ucfirst($row['prenom']);
$nomx = ucfirst($row['nom']);
$to = $row['email'];
if ($to === "xxxx@gmail.com") continue;
// Début du message
$salutation = "Bonjour {$prenomx},
";
// Corps HTML du message
$htmlMessage = "
kwetu - Journées portes ouvertes 2025
$salutation
Nous tenons à vous remercier sincèrement pour votre présence lors de nos journées découvertes des 9 et 10 mai à l’espace mieux-être KWETU.
Vos retours enthousiastes, vos encouragements, votre bienveillance et votre implication ont été une source de grande motivation pour toute notre équipe.
Merci également pour les avis positifs que vous avez pris le temps de partager sur Google : ils sont précieux pour faire connaître notre projet et pour continuer à grandir avec vous.
Ces deux journées ont été une belle réussite, en grande partie grâce à vous.
Nous espérons vous retrouver très bientôt pour continuer ensemble ce chemin vers le bien-être.
Avec gratitude,
Nathalie Ortiz & l’équipe KWETU
GSM: +32 476 69 37 75
";
// Construction des en-têtes et du corps multipart
$boundary = md5(uniqid(time()));
$headers = [
"MIME-Version: 1.0",
"From: $from",
"Reply-To: $from",
"Content-Type: multipart/mixed; boundary=\"$boundary\""
];
$body = "--$boundary\r\n";
$body .= "Content-Type: multipart/alternative; boundary=\"alt-$boundary\"\r\n\r\n";
$body .= "--alt-$boundary\r\n";
$body .= "Content-Type: text/plain; charset=UTF-8\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$body .= strip_tags($htmlMessage) . "\r\n\r\n";
$body .= "--alt-$boundary\r\n";
$body .= "Content-Type: text/html; charset=UTF-8\r\n";
$body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$body .= $htmlMessage . "\r\n\r\n";
$body .= "--alt-$boundary--\r\n\r\n";
// Envoi de l’email
$mail_sent = mail($to, $subject, $body, implode("\r\n", $headers));
date_default_timezone_set('Europe/Brussels');
$timestamp = date("Y-m-d H:i:s");
if ($mail_sent) {
echo "✅ Email des remerciements envoyé à $prenomx $nomx ($to) à $timestamp\n\n";
// Marquer comme remercié
$update_sql = "UPDATE decouverte_referend SET remerciement = 'yes' WHERE nom = ? AND prenom = ?";
$stmt = $db->prepare($update_sql);
$stmt->bind_param("ss", $row['nom'], $row['prenom']);
$stmt->execute();
} else {
echo "❌ Échec de l'envoi de l'email des remerciements à $to\n";
}
// Fermer la connexion
mysqli_close($db);