Envoie un email lors d'une date anniversaire
LaChaux78
Messages postés
607
Statut
Membre
-
LaChaux78 Messages postés 607 Statut Membre -
LaChaux78 Messages postés 607 Statut Membre -
Bonjour,
Je souhaiterai complètes mon script afin d'envoyer un email aux adhérents le jour de leur date d'anniversaire.
J'ai ma requète qui me retourne la date d'anniversaire de chaque membre que j'ai affiché sur ma page d'accueil mais lorsque je rajoute l'envoie de mail ça tourbe en boucle et chacun reçois les email des autres en fait.
J'ai essayé d'autres soluions mais rien de concluant, pourvez-vous m'aider s'ils vous plait. Je vous remercie.
Je souhaiterai complètes mon script afin d'envoyer un email aux adhérents le jour de leur date d'anniversaire.
J'ai ma requète qui me retourne la date d'anniversaire de chaque membre que j'ai affiché sur ma page d'accueil mais lorsque je rajoute l'envoie de mail ça tourbe en boucle et chacun reçois les email des autres en fait.
J'ai essayé d'autres soluions mais rien de concluant, pourvez-vous m'aider s'ils vous plait. Je vous remercie.
$mois = date('m');
$jour = date('d');
$sql = "SELECT dnaiss, nom, prenom
FROM cdc_personnes
LEFT JOIN cdc_adherer ON cdc_personnes.idpers = cdc_adherer.idpers
WHERE annee = ?
AND MONTH(dnaiss) = ?
AND DAY(dnaiss) = ?";
$requete = $bdd->prepare($sql);
$requete->execute(array($aadh,$mois,$jour));
$anniv = '';
while ($donnees = $requete->fetch()) {
if ($anniv == "") {
$anniv = " - <span style='color:red'>Bon anniversaire à</span> : ";
} else {
$anniv .= " - ";
}
$anniv .= "$donnees->nom $donnees->prenom";
ICI J'AVAIS RAJOUTER L'ENVOIE DE EMAIL
}
A voir également:
- Envoie un email lors d'une date anniversaire
- Comment creer un compte email - Guide
- Comment ouvrir un fichier dat - Guide
- Publipostage date inversée ✓ - Forum Word
- Créer un compte email gratuit hotmail - Guide
- Mon email ✓ - Forum Mail
14 réponses
Bonjour,
Si tu veux qu'on t'aide ... commence par nous dire ce que tu avais fais à la place de : -- ICI J'AVAIS RAJOUTER L'ENVOIE DE EMAIL --
Si tu veux qu'on t'aide ... commence par nous dire ce que tu avais fais à la place de : -- ICI J'AVAIS RAJOUTER L'ENVOIE DE EMAIL --
Bonjour,
J'avais mis le script d'envoie de mail en fait.
Merci
J'avais mis le script d'envoie de mail en fait.
Merci
$sql1 = "SELECT * FROM cdc_configsite where clef='resp'";
$requete1 = $bdd->prepare($sql1);
$requete1->execute();
$reponse1 = $requete1->fetch();
$sql2 = "SELECT * FROM cdc_configsite where clef='cdctel'";
$requete2 = $bdd->prepare($sql2);
$requete2->execute();
$reponse2 = $requete2->fetch();
$sql3 = "SELECT * FROM cdc_configsite where clef='cdcmail'";
$requete3 = $bdd->prepare($sql3);
$requete3->execute();
$reponse3 = $requete3->fetch();
$sql4 = "SELECT * FROM cdc_configsite where clef='cdcurl'";
$requete4 = $bdd->prepare($sql4);
$requete4->execute();
$reponse4 = $requete4->fetch();
// Adresse email du destinataire
$destinataire = $donnees->email;
// Titre de l'email
$sujet = 'Bon Anniversaire';
// Contenu du message de l'email
$message = '<html>';
$message .= '<body><p>Bonjour '.$donnees->prenom.' <br/>';
$message .= 'je te souhaite un bon Anniversaire !<br/>';
$message .= 'Bonne journée.<br/>';
$message .= 'A bientôt !<br/>';
$message .= '<p>'.$reponse1->valeur.'</p>';
$message .= $reponse2->valeur.'<br/>';
$message .= $reponse3->valeur.'<br/>';
$message .= $reponse4->valeur.'<br/></body>';
$message .= '</html>';
// Pour envoyer un email HTML, l'en-tête Content-type doit être défini
$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";
$headers .= 'From:"monsite"<monsite@60gp.ovh.net>'."\n";
// Fonction principale qui envoi l'email
mail($destinataire, $sujet, $message, $headers);
Pour ma table cdc_personnes
idpers nom, prenom dnaiss email
Pour la table cdc_adherer
idpers annee
en fait la table cdc_adherer ai utilite uniquement pour l'adhésion des adherents
idpers nom, prenom dnaiss email
Pour la table cdc_adherer
idpers annee
en fait la table cdc_adherer ai utilite uniquement pour l'adhésion des adherents
Bonjour,
En fait je renvoie le script en entier j'ai supprimé les choses inutiles du moins pour ce que je souhaite obtenir.
A savoir envoyer un mail lors d'un anniversaire d'un adhérent.
En fait je renvoie le script en entier j'ai supprimé les choses inutiles du moins pour ce que je souhaite obtenir.
A savoir envoyer un mail lors d'un anniversaire d'un adhérent.
$mois = date('m');
$jour = date('d');
$sql = "SELECT dnaiss, nom, prenom, email
FROM cdc_personnes
WHERE MONTH(dnaiss) = ?
AND DAY(dnaiss) = ?";
$requete = $bdd->prepare($sql);
$requete->execute(array($mois,$jour));
$anniv = '';
while ($donnees = $requete->fetch()) {
if ($anniv == "") {
$anniv = " - <span style='color:red'>Bon anniversaire à</span> : ";
} else {
$anniv .= " - ";
}
$anniv .= "$donnees->nom $donnees->prenom";
// Adresse email du destinataire
$destinataire = $donnees->email;
// Titre de l'email
$sujet = 'Bon Anniversaire';
// Contenu du message de l'email
$message = '<html>';
$message .= '<body><p>Bonjour '.$donnees->prenom.' <br/>';
$message .= 'je te souhaite un bon Anniversaire !<br/>';
$message .= 'Bonne journée.<br/>';
$message .= 'A bientôt !<br/>';
$message .= '</body>';
$message .= '</html>';
// Pour envoyer un email HTML, l'en-tête Content-type doit être défini
$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";
$headers .= 'From:"monsite"<monsite@60gp.ovh.net>'."\n";
// Fonction principale qui envoi l'email
mail($destinataire, $sujet, $message, $headers);
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
et tu dis que cela envoie un email à tous, avec dans le mail le prénom de la personne ayant son anniversaire?
Bonjour
Non en fait je me suis trompé cela envoie uniquement le mail à la personne concerné mais en boucle c'est à dire la personne concerné par son anniversaire le reçois plusieurs fois.
Merci
Non en fait je me suis trompé cela envoie uniquement le mail à la personne concerné mais en boucle c'est à dire la personne concerné par son anniversaire le reçois plusieurs fois.
Merci
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
Bonjour, moi j'ajouterais un champ dans la table cdc_personnes, pour enregistrer le moment où le dernier email d'anniversaire a été envoyé à chacun. Je rajouterais un test sur ce moment dans le SELECT, par exemple:
Et mettre à jour le champ moment_email_annif après envoi du mail.
SELECT dnaiss, nom, prenom, email FROM cdc_personnes WHERE MONTH(dnaiss) = ? AND DAY(dnaiss) = ?" AND moment_email_annif < NOW() - INTERVAL 1 WEEK
Et mettre à jour le champ moment_email_annif après envoi du mail.
Bonjour
Merci pour vos réponses.
J'ai essayé de créer une tache Cron sur mon hébergeur OVH mais je ne comprends pas en fait.
J'ai également rajouté un champ dans ma table cdc_personnes j'ai mis à jour le champ, toujours aucun résultat.
Je vais essayer de persévérer.
Merci pour vos réponses.
J'ai essayé de créer une tache Cron sur mon hébergeur OVH mais je ne comprends pas en fait.
J'ai également rajouté un champ dans ma table cdc_personnes j'ai mis à jour le champ, toujours aucun résultat.
Je vais essayer de persévérer.
Bonjour
En fait j'ai créé une tache cron.
Dans commande à exécuter j'ai le chemin "libs/anniv_cron.php"
il y a les heures, les jours, les jours de la semane, les mois
j'ai laissé par défault.
Ensuite il faut mon script PHP, j'ai fait ça mais surement que cette requète ne vas pas.
En fait j'ai créé une tache cron.
Dans commande à exécuter j'ai le chemin "libs/anniv_cron.php"
il y a les heures, les jours, les jours de la semane, les mois
j'ai laissé par défault.
Ensuite il faut mon script PHP, j'ai fait ça mais surement que cette requète ne vas pas.
$mois = date('m');
$jour = date('d');
$sql = "SELECT dnaiss, nom, prenom, email
FROM cdc_personnes
WHERE MONTH(dnaiss) = ?
AND DAY(dnaiss) = ?";
$requete = $bdd->prepare($sql);
$requete->execute(array($mois,$jour));
while ($donnees = $requete->fetch()) {
// Adresse email du destinataire
$destinataire = $donnees->email;
// Titre de l'email
$sujet = 'Bon Anniversaire';
// Contenu du message de l'email
$message = '<html>';
$message .= '<body><p>Bonjour '.$donnees->prenom.' <br/>';
$message .= 'je te souhaite un bon Anniversaire !<br/>';
$message .= 'Bonne journée.<br/>';
$message .= 'A bientôt !<br/>';
$message .= '</body>';
$message .= '</html>';
// Pour envoyer un email HTML, l'en-tête Content-type doit être défini
$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";
$headers .= 'From:"monsite"<monsite@60gp.ovh.net>'."\n";
// Fonction principale qui envoi l'email
mail($destinataire, $sujet, $message, $headers);
}
le plus probable, c'est que ton script ne se trouve pas au bon endroit.
en lisant ceci:
https://docs.ovh.com/fr/hosting/mutualise-taches-automatisees-cron/
tu trouveras les explications pour voir si ton script est bien exécuté.
tu peux ajouter des echo dans ton script, tu pourras ainsi vérifier dans les logs si il se comporte bien.
tu peux aussi forcer l'exécution de ton script, si il est à un endroit accessible du web (il me semble qu'il vaut mieux le mettre à un autre endroit)
en lisant ceci:
https://docs.ovh.com/fr/hosting/mutualise-taches-automatisees-cron/
tu trouveras les explications pour voir si ton script est bien exécuté.
tu peux ajouter des echo dans ton script, tu pourras ainsi vérifier dans les logs si il se comporte bien.
tu peux aussi forcer l'exécution de ton script, si il est à un endroit accessible du web (il me semble qu'il vaut mieux le mettre à un autre endroit)
Bonjour
Merci pour toutes tes explications.
En fait lorsque je regarde dans Logs j'ai cette ligne...
"Cliquez ici pour voir les logs bruts en temps réel"
il y a web - ftp - error - cgi - out - ssh - cron
mais cron ne peut pas être clicable.
la commande est "www/anniv_cron.php, lorsque j'ouvre ma page pour Diagnostiquer une erreur sur ma tâche automatisée ma page est vierge c'est à dire blanche.
Excuse moi j'ai lu tous ce qui concerne le lien que tu m'a envoyé mais je n'y arrive pas.
Merci
Merci pour toutes tes explications.
En fait lorsque je regarde dans Logs j'ai cette ligne...
"Cliquez ici pour voir les logs bruts en temps réel"
il y a web - ftp - error - cgi - out - ssh - cron
mais cron ne peut pas être clicable.
la commande est "www/anniv_cron.php, lorsque j'ouvre ma page pour Diagnostiquer une erreur sur ma tâche automatisée ma page est vierge c'est à dire blanche.
Excuse moi j'ai lu tous ce qui concerne le lien que tu m'a envoyé mais je n'y arrive pas.
Merci
bonjour,
1) attention, si tu peux ouvrir ta page, d'autres pourront aussi, il est recommandé de placer un script dans un dossier racine qui n’est pas couplé à un domaine ou sous-domaine (donc inaccessible par le web)
2) je lis que cela prend du temps (parfois 24h) avant que le script soit exécuté la première fois, il te suffit peut-être de patienter
1) attention, si tu peux ouvrir ta page, d'autres pourront aussi, il est recommandé de placer un script dans un dossier racine qui n’est pas couplé à un domaine ou sous-domaine (donc inaccessible par le web)
2) je lis que cela prend du temps (parfois 24h) avant que le script soit exécuté la première fois, il te suffit peut-être de patienter
Bonjour
J'ai ouvert les logs cron malheureusement celà ne me dit rien, c'est vraiment complexe pour un novice.
Pouvez-vous m'aider un peu s'ills vous plait.
Je n'ai aucun retour de mail, comment ce déclenche l'envoie de mail? es ce que mon script est bon? faut-il que je mette mon fichier anniv_cron.php dans un dossier si oui pour quelle raison.
Enfin bref je suis completement perdu.
Merci
J'ai ouvert les logs cron malheureusement celà ne me dit rien, c'est vraiment complexe pour un novice.
Pouvez-vous m'aider un peu s'ills vous plait.
Je n'ai aucun retour de mail, comment ce déclenche l'envoie de mail? es ce que mon script est bon? faut-il que je mette mon fichier anniv_cron.php dans un dossier si oui pour quelle raison.
Enfin bref je suis completement perdu.
Merci
Alors en Français cela donne...
Votre travail n'a pu être initié pour une raison inconnue. Veuillez contacter le support client pour plus d'informations
[2017-01-29 18:03:03] ## OVH ## END - 2017-01-29 18:03:03.437940 exitcode: 255
[2017-01-29 19:03:03] ## OVH ## START - 2017-01-29 19:03:03.272654 executing: /usr/local/php5.4/bin/php /homez.650/cliquede/./www//anniv_cron.php
Excuse moi j'essaie d'avancer pas à pas
Votre travail n'a pu être initié pour une raison inconnue. Veuillez contacter le support client pour plus d'informations
[2017-01-29 18:03:03] ## OVH ## END - 2017-01-29 18:03:03.437940 exitcode: 255
[2017-01-29 19:03:03] ## OVH ## START - 2017-01-29 19:03:03.272654 executing: /usr/local/php5.4/bin/php /homez.650/cliquede/./www//anniv_cron.php
Excuse moi j'essaie d'avancer pas à pas
Bonjour
Je viens de regarder dans logs et le résultat est:
[2017-01-30 07:03:03] ## OVH ## END - 2017-01-30 07:03:03.494009 exitcode: 255
[2017-01-30 07:03:03]
[2017-01-30 07:03:03] ## OVH ## Your job could not be initiated for an unknown reason. Please contact customer support for more information.
[2017-01-30 07:03:03] ## OVH ## END - 2017-01-30 07:03:03.494781 exitcode: 255
[2017-01-30 08:03:03] ## OVH ## START - 2017-01-30 08:03:03.343563 executing: /usr/local/php5.4/bin/php /homez.650/cliquede/./www/anniv_cron.php
Je viens de regarder dans logs et le résultat est:
[2017-01-30 07:03:03] ## OVH ## END - 2017-01-30 07:03:03.494009 exitcode: 255
[2017-01-30 07:03:03]
[2017-01-30 07:03:03] ## OVH ## Your job could not be initiated for an unknown reason. Please contact customer support for more information.
[2017-01-30 07:03:03] ## OVH ## END - 2017-01-30 07:03:03.494781 exitcode: 255
[2017-01-30 08:03:03] ## OVH ## START - 2017-01-30 08:03:03.343563 executing: /usr/local/php5.4/bin/php /homez.650/cliquede/./www/anniv_cron.php