retour erreur de la fonction php mail()

retour erreur de la fonction php mail() - PHP - Programmation

Marsh Posté le 23-11-2004 à 13:55:33    

Voilà j'utilise la fonction mail pour envoyer une newsletter à environ 2000 abonnés et je suis sûr qu'il y a des mails erronés ou plus valides dans ma bdd, cependant la fonction mail() ne me renvoie aucune erreur et me dit que tous les mails ont été envoyés.
 
Est ce normal ?
Y a t-il une autre manière de le vérifier autre qu'en testant la foncion mail () apres son exécution ?
Merci pour vos éclaircissements!
 
Voilà mon code :
 

Citation :

$mail=mysql_result($TableRep,$i,"mail" );
 $date=mysql_result($TableRep,$i,"date" );
 $email=mail($mail, $subject, $message, $headers);
    if ($email=='1') {
 echo "<tr><td align=\"center\">$date</td><th>$mail</th><td align=\"center\">OK</td><tr>\n";
 } else {
 echo "<tr><td align=\"center\">$date</td><th>$mail</th><td align=\"center\"><input type=\"checkbox\" name=\"case[]\" value=\"".mysql_result($TableRep,$i,"id" )."\" checked></td><tr>\n";
 }
 $i++;


 
Brièvement le code me renvoie OK pour le mail envoyé et une checkbox déjà coché si le mail n'est pas envoyé.

Reply

Marsh Posté le 23-11-2004 à 13:55:33   

Reply

Marsh Posté le 23-11-2004 à 14:04:32    

pitchdesign a écrit :

Voilà j'utilise la fonction mail pour envoyer une newsletter à environ 2000 abonnés et je suis sûr qu'il y a des mails erronés ou plus valides dans ma bdd, cependant la fonction mail() ne me renvoie aucune erreur et me dit que tous les mails ont été envoyés.
 
Est ce normal ?
Y a t-il une autre manière de le vérifier autre qu'en testant la foncion mail () apres son exécution ?
Merci pour vos éclaircissements!
 
Voilà mon code :
 

Citation :

$mail=mysql_result($TableRep,$i,"mail" );
 $date=mysql_result($TableRep,$i,"date" );
 $email=mail($mail, $subject, $message, $headers);
    if ($email=='1') {
 echo "<tr><td align=\"center\">$date</td><th>$mail</th><td align=\"center\">OK</td><tr>\n";
 } else {
 echo "<tr><td align=\"center\">$date</td><th>$mail</th><td align=\"center\"><input type=\"checkbox\" name=\"case[]\" value=\"".mysql_result($TableRep,$i,"id" )."\" checked></td><tr>\n";
 }
 $i++;


 
Brièvement le code me renvoie OK pour le mail envoyé et une checkbox déjà coché si le mail n'est pas envoyé.


 
 

Code :
  1. if(mail($mail, $subject, $message, $headers)){
  2.   echo "Mail envoyé avec succès"
  3. }else{
  4.   echo "Erreur sur ce mail :". $mail;
  5. }


 
 
voila un bout de code version light donc la variable $mail ne sert a rien.
tu peux faire ceci
 

Code :
  1. if(mail(...) == true)
  2. if(mail(...))
  3. if(mail(...)==1)


 
 :non: Mais ne fait pas de  
 

Code :
  1. if(mail()=='1')


La fonction mail ne te renvoy pas une chaine de caractere mais une valeur numérique. Peut etre que ça passe quand même mais un jour ca va te reserver un surprise et tu ne seras d'ou ça vien.
Prend de bonne habitude  [:papy]  

Reply

Marsh Posté le 23-11-2004 à 14:14:16    

merci j'essayerais dès ce soir en zappant la variable $email et en utilisant ton code light sans déclarer de variable supplémentaire!
C'est étonnant tout de même car pour tout vous dire, il me génère l'erreur avec checkbox lorsque j'essaie d'envoyer la newsletter a une adresse mail non valide sur mon domaine et pas à d'autres adresses non valides sur d'autres domaines.
Est ce normal ca aussi ?

Reply

Marsh Posté le 23-11-2004 à 14:16:58    

je pense que oui. Mail il envoit le mail un point c'est tout!
Kan mail() échoue, c'est que lui il a pu ENVOYER le mail.
 
Rien à vois avec le fait que le mail soit recu ou pas, enfin je pense! :)

Reply

Marsh Posté le 23-11-2004 à 14:18:34    

Effectivement, la fonction mail n'attend pas de retour du serveur pour savoir si le mail est valide. Il balance le mail et ne prend pas la responsabilité. Quoi que, il me semble que oui en partie mais je me rappelle plus sur quel critère.

Reply

Marsh Posté le 23-11-2004 à 14:33:48    

ok donc tout s'explique et y aurait il une solution pour envoyer le mail et savoir en retour si le compte du destinataire est bien valide et de vérifier ke le mail est arrivé à bon port?
solution en php ou autres si vous savez?

Reply

Marsh Posté le 23-11-2004 à 14:58:16    

De tête mais ce n'est qu'un premier jet. Ce que j'ai en tete ne fonctionne que si le destinataire lit le mail.
Tu peux mettre une image dans le mail qui a cette forme.
<img src="htttp://ton.site.com/image.php?id=xxxxxx">
 
Dans le fichier image.php tu regarde a qui correspond cette id. tu peux savoir qui a lu le mail ou pas. Mais pour voir l'image il faut faire un p'tit truc , si tu es interessé je peux te passer le script pour faire afficher une image dans un fichier php.

Reply

Marsh Posté le 23-11-2004 à 15:10:34    

ouai je veux bien car j'avais justement pensé à faire quelquechose de la sorte !
cad placez un indicateur ds le mail ki me renverrait si le mail a bien été lu... mais je ne sais pas encore koi utiliser?!

Reply

Marsh Posté le 23-11-2004 à 15:13:41    

ok je te placerais le code ver la fin de l'après midi. En gros c'est pour afficher une image en y plaçant du code php tous simplement.

Reply

Marsh Posté le 23-11-2004 à 15:53:21    

et quel serait le principe comment je pourrais juger du retour?

Reply

Marsh Posté le 23-11-2004 à 15:53:21   

Reply

Marsh Posté le 23-11-2004 à 16:04:36    

lorsque le mail sera lu il va executer le fichier image.php?id=xxxx c'est totalement invisible pour le destinataire. Non seulement il va afficher l'image mais il va en plus executer un scripte.
Derriere il suffit de faire un scripte qui capte l'id et tu en fait ce que tu veux. tu le place en base ou tu l'envoy par mail ect...

Reply

Marsh Posté le 23-11-2004 à 16:08:38    

mais c'est une exellente idée ca! gg!
Mais ouais trop bien! j'y avais vraiment pas pensé!

Reply

Marsh Posté le 23-11-2004 à 16:14:24    

Voici un code qui permet d'afficher l'image. Regarde le j'ai pas nettoyé le code mais tu comprendras.
Ne prétez pas attention sur les syntaxe et autre norme, c'est un code que j'ai pondu à mes début en php :D
 
 

Code :
  1. <?
  2. header("Pragma: no-cache" );
  3. header("Expires: 0" );
  4. header("Last-Modified: " . gmdate("D, d M Y H:i:s" ) . " GMT" );
  5. header("Cache-Control: no-cache, must-revalidate" );
  6. header("Content-type: image/jpeg" );
  7. $id=1;
  8. include"../scripts/connection.inc";
  9. include"../scripts/function_site.inc";
  10. $idtable = $HTTP_GET_VARS['idtable'];
  11. $idimage = $HTTP_GET_VARS['idimage'];
  12.   click($idtable,$idimage,$REMOTE_ADDR);
  13. $url_image=$tab_site["url_image_secur"].$tab_site["url_image"];
  14.          $req_table ="SELECT nom FROM y_table WHERE idtable=".$idtable;
  15.          $res_table =mysql_query($req_table);
  16.          $tab_table =mysql_fetch_array($res_table);
  17.          $res_img ="SELECT nom FROM ".$tab_table[0]." WHERE idimage=".$idimage;
  18.          $res_img =@mysql_query($res_img);
  19.          $tab_img =@mysql_fetch_array($res_img);
  20. readfile($url_image.$tab_table[0]."/".$tab_img[0]);
  21. ?>


 
 
Ce fichier peut etre lu dans une balise img.


Message édité par Berceker United le 23-11-2004 à 16:15:52
Reply

Marsh Posté le 23-11-2004 à 18:58:58    

berceker united a écrit :

De tête mais ce n'est qu'un premier jet. Ce que j'ai en tete ne fonctionne que si le destinataire lit le mail.
Tu peux mettre une image dans le mail qui a cette forme.
<img src="htttp://ton.site.com/image.php?id=xxxxxx">
 
Dans le fichier image.php tu regarde a qui correspond cette id. tu peux savoir qui a lu le mail ou pas. Mais pour voir l'image il faut faire un p'tit truc , si tu es interessé je peux te passer le script pour faire afficher une image dans un fichier php.


 
Ce "webbug", celui du pixel invisible est désactivé par deffaut sur plusieurs serveur de mail (comme hotmail)
 
A+

Reply

Marsh Posté le 23-11-2004 à 19:03:02    

esox_ch a écrit :

Ce "webbug", celui du pixel invisible est désactivé par deffaut sur plusieurs serveur de mail (comme hotmail)
 
A+


Non, il la rend visible ça sera une simple image. Exemple : un logo.

Reply

Marsh Posté le 24-11-2004 à 06:50:04    

Berceker United a écrit :

Non, il la rend visible ça sera une simple image. Exemple : un logo.


 
C'est bien ce que je dis, actuellement chaque fois que je recois un email html contenant des images, hotmail les "desactive" et met une petite banderolle disant "Si tu veux afficher l'image clique ici".
 
A moin que l'utilisateur soit stupide il y a peu de chances qu'il active le webbug non?

Reply

Marsh Posté le 24-11-2004 à 09:26:47    

il désactive les images lorsque le mail est lu depuis le dossier "courrier indésirable" il me semble et pas dans la boite de réception !?

Reply

Marsh Posté le 24-11-2004 à 13:01:22    

+1

Reply

Marsh Posté le 24-11-2004 à 13:23:55    

esox_ch a écrit :

C'est bien ce que je dis, actuellement chaque fois que je recois un email html contenant des images, hotmail les "desactive" et met une petite banderolle disant "Si tu veux afficher l'image clique ici".
 
A moin que l'utilisateur soit stupide il y a peu de chances qu'il active le webbug non?


 
la majorité des bons clients mail intègre aussi ce principe, ça rend la solution "fichier image.php" un peu caduque à mon sens :/

Reply

Marsh Posté le 25-11-2004 à 12:24:07    

vous auriez donc une solution alternative ?

Reply

Marsh Posté le 25-11-2004 à 13:37:19    

Arrêté de vous braquez sur hotmail.:o

Reply

Marsh Posté le 25-11-2004 à 18:51:04    

Berceker United a écrit :

Arrêté de vous braquez sur hotmail.:o


 
On ne se braque pas, on te dit que ta solution pose problème pour tout les clients mails n'affichant pas les mails au format html, ce qui représente une part non négligeable des clients mails actuels.

Reply

Marsh Posté le 25-11-2004 à 19:09:48    

naceroth a écrit :

On ne se braque pas, on te dit que ta solution pose problème pour tout les clients mails n'affichant pas les mails au format html, ce qui représente une part non négligeable des clients mails actuels.


Donc indiquer que si le mail et qu'il souhaite le voir en mode texte "veuillez cliquer sur ce lien". A partir de là il clique sur un fichier présent sur le serveur et la il peut capter les mails arriver chez le destinataire, à partir du moment ou ils ont cliquer sur le lien.

Reply

Marsh Posté le 17-12-2010 à 14:12:37    

en localhost, y'à t-il un fichier log des envois mails ?
( hors serveur de production, en environnement windows )


Message édité par grosbin le 17-12-2010 à 14:14:31

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 17-12-2010 à 16:20:18    

6 ans après ... pas mal :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 19-12-2010 à 23:46:01    

le monsieur est intelligent il remonte un topic en posant une question, il ne vient pas répondre à une question morte depuis 6 ans :o


---------------
Blablaté par Harko
Reply

Marsh Posté le 20-12-2010 à 11:40:42    

Oui bon faut voir aussi la question hein :o
 
Sans compter que :
- Je crois que la règle "on ne squatte pas les topic des autres" est toujours en vigueur.
- Il dit pas ce qu'est sont serveur d'envoi
- Son "en localhost" ne veut rien dire (il veut savoir les e-mails vers localhost? Depuis localhost? Transitant par le serveur local?)
- Une fois que ces questions seront éclaircies, une recherche google de 20 sec lui donnerait la réponse.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed