programme pour recupérer des mails - C - Programmation
Marsh Posté le 05-06-2007 à 22:53:17
bon âpres moult tentative je comprend toujours pas pourquoi ca plante, mais apparemment c'est fprintf qui fait planté...
je l'ai remplacé par fputs et ça à l'air de mieux fonctionner.
faudrait qu'on m'explique pourquoi quand même, parce que je ne vois vraiment pas pourquoi =/
ensuite je pourrais remettre un code un peu plus propre si jamais ca interesse...
Marsh Posté le 06-06-2007 à 09:00:16
Ancien code :
Code :
|
Ce code a un problème.
fprintf() a besoin (comme printf, sprintf etc...) d'au moins 3 paramètres. Le plantage aléatoire vient du fait que si "list" contient
la chaîne "%s" par exemple, alors le programme (fonction frprintf()) va chercher le pointeur associé sur la pile, ce qui donne vraisemblablement un pointeur invalide d'où plantage.
Il faut donc que tu précises explicitement le deuxième paramètre "%s", comme cela ton fprintf() maintenant est solide et ne plantera plus aléatoirement selon les données reçues.
Nouveau code :
Code :
|
Marsh Posté le 06-06-2007 à 12:39:27
ha oui un autre probleme lorsqu'il recupere des mails, il arrive parfois que ca reste figée...
vous avez une idée de comment évitez cela ?
Marsh Posté le 06-06-2007 à 16:06:39
minokitaro a écrit : ha oui un autre probleme lorsqu'il recupere des mails, il arrive parfois que ca reste figée... |
Ton problème vient de ceci:
Code :
|
Selon le buffering et la réception (problème aléatoire), tu peux recevoir cette séquence de fin en plusieurs paquets
comme "xxx\r\n." suivi de "\r\n", ou "xxx\r\n" suivi de ".\r\n" etc.. ou autres combinaisons (xxx= exemples de caractères de longueur variable de fin de l'email reçu).
Ce qui fait que pour le serveur il a tout envoyé et tu as tout reçu mais tu n'as pas détecté la condition de fin pour finir
le protocole POP3.
A mieux détecter toutes les conditions de fin possible, ou voir des exemples de codes existants (chercher Google pour code source de client POP3).
Marsh Posté le 05-06-2007 à 18:52:13
Bonjour, je voulais faire un programme qui me permettrais de récupérer tous mes mails et de les stocker dans un dossier.
Le problème c'est qu'il plante avec "certain mail" sans que je puisse savoir pourquoi...
exemple :
j'ai 100 mails dans ma boites il récupère puis plante au 10eme.
je recommence cette fois en commencer par le 20eme et je peux récupérer tous le reste.
si je supprime le mail qui me plante je récupère tous sans problème...
procédé :
- je récupère la liste pour avoir le nombre de mails
- je fais une boucle pour récupérer les mails et les stocks dans des fichiers séparer
NB: il ouvre un fichier connection.txt ou il y a les infos d'un compte mail d'un server (sans SSL ou autre) :
smtp.fournisseur.com
compte
pass
port
donc j'aimerais savoir si le problème vous arrive aussi, et si vous avez des conseils. =)
http://dl.free.fr/pqTkKEKO/main.txt