Ou est l'erreur ?
Résolu
Arthur
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je cherche a faire un script php qui se déclenche sur evenement, mais celui ci ne fonctionne pas.
je vous poste le code car je ne vois pas ou est l'erreur
La question est le pourquoi il m'affiche toujours echec de l'envoi du mail, et qu'il refuse de l'envoyé
merci d'avance de l'aide apportée
Arthur
je cherche a faire un script php qui se déclenche sur evenement, mais celui ci ne fonctionne pas.
je vous poste le code car je ne vois pas ou est l'erreur
<? include('config.php')?> <?php $sql = mysql_query("SELECT * FROM users"); while($annif = mysql_fetch_array($sql)){ if (date("d/m/Y") == $annif['date'] AND $Destinataire==0){ // Envoi du mail } } ?> <? $Destinataire =$_GET['email']; $age=$_GET['age']; $prenom=$_GET['prenom']; $Sujet = "Joyeux anniversaire"; $From = "From:***@***"; $From .= "MIME-version: 1.0\n"; $From .= "Content-type: text/html; charset= utf8\n"; $Message = ("test"); if (mail($Destinataire,$Sujet,$Message,$From))echo"Mail en cours d'envoi...."; else echo "Echec de l’envoi du mail."; ?>
La question est le pourquoi il m'affiche toujours echec de l'envoi du mail, et qu'il refuse de l'envoyé
merci d'avance de l'aide apportée
Arthur
A voir également:
- Ou est l'erreur ?
- Erreur 0x80070643 - Accueil - Windows
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
4 réponses
Concnernant ton souci d'envoie de mail.. peux tu tester ce code (et uniquement ça !) :
Ensuite, concernant le reste de ton code... plusieurs choses ne vont pas !
1 - Tu as visiblement des dates dans ta BDD .... et tu les a mis dans des varchar en format français... hors il existe un format spécial pour les dates dans les bdd ... les champs de type DATE. (qui sont au format Y-m-d )
1 bis ) tu as nommé un de tes champs "date" .... c'est un mot clé réservé. Evite !! Renomme le plutôt date_anniv par exemple
2 - Tu utilises l'ancienne extension mysql .. considérée comme obsolète ! . Je t'invite vivement à passer à mysqli ou (je préfère...) PDO.
voir ici : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
3 - Une fois que tu auras procédé aux modif (du point °1 et 1 bis sur le champ date...)
tu pourras faire une requête ne remontant que les anniv du jour.
<?php //affichage des erreurs PHP error_reporting(E_ALL); require_once 'config.php'; //envoi du Mail $to = 'personne@example.com'; // a changer pour tester $subject = 'test envoie de mail'; $message = 'Bonjour !'; $headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); if(mail($to, $subject, $message, $headers)){ echo "Mail envoyé"; }else{ echo "Erreur lors de l'envoie du mail"; }
Ensuite, concernant le reste de ton code... plusieurs choses ne vont pas !
1 - Tu as visiblement des dates dans ta BDD .... et tu les a mis dans des varchar en format français... hors il existe un format spécial pour les dates dans les bdd ... les champs de type DATE. (qui sont au format Y-m-d )
1 bis ) tu as nommé un de tes champs "date" .... c'est un mot clé réservé. Evite !! Renomme le plutôt date_anniv par exemple
2 - Tu utilises l'ancienne extension mysql .. considérée comme obsolète ! . Je t'invite vivement à passer à mysqli ou (je préfère...) PDO.
voir ici : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
3 - Une fois que tu auras procédé aux modif (du point °1 et 1 bis sur le champ date...)
tu pourras faire une requête ne remontant que les anniv du jour.
SELECT * FROM users WHERE date_anniv = DATE_FORMAT(now(),'%Y-%m-%d')
Bonjour
Tu es en local ou sur un serveur ?
Tu es en local ou sur un serveur ?
bonsoir,
Je suis sur un serveur,
Il prend directement les informations en bdd, ce qui est plus facile pour faire les tests etant donné que j'ai plusieurs anniversaire ce mois ci, et j'aimerais faire une tache cron sur la page afin d'automatiser la tache. Je ne comprends pas trop mon erreur. Merci de ta réponse
Je suis sur un serveur,
Il prend directement les informations en bdd, ce qui est plus facile pour faire les tests etant donné que j'ai plusieurs anniversaire ce mois ci, et j'aimerais faire une tache cron sur la page afin d'automatiser la tache. Je ne comprends pas trop mon erreur. Merci de ta réponse
Tu ne te sers pas de ta requete ?
As tu fais un echo de tes variables pour voir si elles sont bonnes ?
As tu fais un echo de tes variables pour voir si elles sont bonnes ?
et si je met ceci
cela ne prend pas les email, et affiche juste l'echo.
<? include ('config.php')?> <?php $sql = mysql_query("SELECT * FROM users"); while($annif = mysql_fetch_array($sql)){ if (date("d/m/Y") == $annif['date'] );{ ?> <? } } $e_mail = $annif['email']; //prend l'email de la table //Contenu du mail $contenu = ''; $contenu .= '': '; $contenu .= ''; // envoi du mail HTML $from = "From: <***@***>\nMime-Version:"; $from .= " 1.0\nContent-Type: text/html; charset=utf8"; // envoie du mail mail($e_mail,$nom,$contenu,$from); echo'N° '.$compteur.' - '.$e_mail.' ; $compteur++; // ajoute 1 à la variale du compteur // ' // fin du while ?>
cela ne prend pas les email, et affiche juste l'echo.
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
La requête SQL devient alors :
ou tu peux aussi faire :
Celui du mail ?
C'est juste pour un test ... il faudra ensuite le remettre dans la boucle issues de ta requête SQL. (une fois que tu auras tenu compte des mes remarques précédentes)