Accueil > > > VÉRIFIER SI L'ON A DES MAILS
VÉRIFIER SI L'ON A DES MAILS
Information sur la source
Description
Voilà une petite fonction permettant de vérifier si l'on a des mails. J'ai pondu cette petite fonction pour les besoins d'un autre programme, je n'ai donc pas le temps ni l'envie de l'améliorer... Si quelqu'un veut l'améliorer, voici la liste des commandes d'un serveur POP3 : USER identifiant Cette commande permet de s'authetifier. Elle doit être suivie du nom de l'utilisateur, c'est-à-dire une chaiîne de caractères identifiant l'utilisateur sur le serveur. La commande USER doit précéder la commande PASS. PASS mot_de_passe La commande PASS, permet d'indiquer le mot de passe de l'utilisateur dont le nom a été spécifié lors d'une commande USER préalable. STAT Information sur les messages contenus sur le serveur RETR Numéro du message à récupérer DELE Numéro du message à supprimer LIST [msg] Numéro du message à afficher NOOP Permet de garder les connexion ouverte en cas d'inactivité TOP <messageID> <n> Commande affichant n lignes du message, dont le numéro est donné en argument. En cas du réponse positive du serveur, celui-ci renvoie les en-têtes du message, puis une ligne vierge et enfin les n premières lignes du message. UIDL [msg] Demande au serveur de renvoyer une ligne contenant des informations sur le message éventuellement donné en argument. Cette ligne contient une chaîne de caractères, appelée listing d'identificateur unique, permettant d'identifier de façon unique le message sur le serveur, indépendamment de la session. L'argument optionnel est un numéro correspondant à un message existant sur le serveur POP, c'est-à-dire un message non effacé). QUIT La commande QUIT demande la sortie du serveur POP3. Elle entraîne la suppression de tous les messages marqués comme effacés et renvoie l'état de cette action.
Source
- char* CheckMail(char* login, char* password, char* server, int port) {
- SOCKET sock;
-
- char* user = new char[1024];
- strcpy(user, "USER ");
- char* pass = new char[1024];
- strcpy(pass, "PASS ");
-
- strcat(user, login);
- strcat(user, "\r\n");
- strcat(pass, password);
- strcat(pass, "\r\n");
-
- WSADATA wsaData;
- WSAStartup(0x0101, &wsaData);
-
- struct sockaddr_in serverSockAddr;
- long hostAddr;
-
- sock = NULL;
- hostAddr = inet_addr(server);
-
- if (hostAddr != -1)
- memcpy(&serverSockAddr.sin_addr, &hostAddr, sizeof(hostAddr));
- else {
- struct hostent* serverHostEnt;
- serverHostEnt = gethostbyname(server);
- if (serverHostEnt == NULL)
- return false;
- memcpy(&serverSockAddr.sin_addr, serverHostEnt->h_addr, serverHostEnt->h_length);
- }
-
- serverSockAddr.sin_port = htons(port);
- serverSockAddr.sin_family = AF_INET;
-
- sock = socket(AF_INET, SOCK_STREAM, 0);
- if (sock < 0)
- return false;
-
- int not = 0;
- setsockopt(sock, SOL_SOCKET, SO_DONTLINGER, (char *)¬, sizeof(not));
-
- if (connect(sock, (struct sockaddr*)&serverSockAddr, sizeof(serverSockAddr)) < 0)
- return false;
-
- unsigned long ioctl_blocking = 1;
- ioctlsocket(sock, FIONBIO, &ioctl_blocking);
-
- char buf[1024];
- buf[0] = 0x00;
- while (!buf[0])
- recv(sock, buf, 1024, 0);
-
- char* result = new char[32];
-
- for (int i = 0; i < 4; i++) {
- char* buffer = new char[sizeof(user)];
- switch (i) {
- case 0: strcpy(buffer, user); break;
- case 1: strcpy(buffer, pass); break;
- case 2: strcpy(buffer, "STAT\r\n"); break;
- case 3: strcpy(buffer, "QUIT\r\n"); break;
- }
- Sleep(1000);
- send(sock, buffer, strlen(buffer), 0);
-
- char buf[1024];
- buf[0] = 0x00;
- while (!buf[0])
- buf[recv(sock, buf, 1024, 0)] = '\0';
-
- if (i == 2) {
- if (buf[0] == '+' && buf[1] == 'O' && buf[2] == 'K') {
- for (int i = 4; buf[i] != ' '; i++);
- result[i - 3] = '\0';
- for (; i >= 4; i--) result[i - 4] = buf[i];
- } else {
- strcpy(result, "0");
- }
- }
- }
-
- shutdown(sock, 2);
-
- return result;
- }
char* CheckMail(char* login, char* password, char* server, int port) {
SOCKET sock;
char* user = new char[1024];
strcpy(user, "USER ");
char* pass = new char[1024];
strcpy(pass, "PASS ");
strcat(user, login);
strcat(user, "\r\n");
strcat(pass, password);
strcat(pass, "\r\n");
WSADATA wsaData;
WSAStartup(0x0101, &wsaData);
struct sockaddr_in serverSockAddr;
long hostAddr;
sock = NULL;
hostAddr = inet_addr(server);
if (hostAddr != -1)
memcpy(&serverSockAddr.sin_addr, &hostAddr, sizeof(hostAddr));
else {
struct hostent* serverHostEnt;
serverHostEnt = gethostbyname(server);
if (serverHostEnt == NULL)
return false;
memcpy(&serverSockAddr.sin_addr, serverHostEnt->h_addr, serverHostEnt->h_length);
}
serverSockAddr.sin_port = htons(port);
serverSockAddr.sin_family = AF_INET;
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0)
return false;
int not = 0;
setsockopt(sock, SOL_SOCKET, SO_DONTLINGER, (char *)¬, sizeof(not));
if (connect(sock, (struct sockaddr*)&serverSockAddr, sizeof(serverSockAddr)) < 0)
return false;
unsigned long ioctl_blocking = 1;
ioctlsocket(sock, FIONBIO, &ioctl_blocking);
char buf[1024];
buf[0] = 0x00;
while (!buf[0])
recv(sock, buf, 1024, 0);
char* result = new char[32];
for (int i = 0; i < 4; i++) {
char* buffer = new char[sizeof(user)];
switch (i) {
case 0: strcpy(buffer, user); break;
case 1: strcpy(buffer, pass); break;
case 2: strcpy(buffer, "STAT\r\n"); break;
case 3: strcpy(buffer, "QUIT\r\n"); break;
}
Sleep(1000);
send(sock, buffer, strlen(buffer), 0);
char buf[1024];
buf[0] = 0x00;
while (!buf[0])
buf[recv(sock, buf, 1024, 0)] = '\0';
if (i == 2) {
if (buf[0] == '+' && buf[1] == 'O' && buf[2] == 'K') {
for (int i = 4; buf[i] != ' '; i++);
result[i - 3] = '\0';
for (; i >= 4; i--) result[i - 4] = buf[i];
} else {
strcpy(result, "0");
}
}
}
shutdown(sock, 2);
return result;
}
Conclusion
#include <windows.h> et ws2_32.lib nécessaires
Exemple d'utilisation :
MessageBox(NULL, CheckMail(nom_dutilisateur, mot_de_passe, pop3.wanadoo.fr, 110), "Messages en attente", NULL);
Historique
- 19 décembre 2005 16:51:37 :
- Ajout de mots clés
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Serveur mail [ par PunkDude424 ]
Salut, je me suis fait un petit serveur de mail, je suis capable de le faire tourner sur ma machine et ainsi permetttre au autre utilisateur de mon ré
serveur POP3 [ par djjej ]
Bonjour à tous!Je voudrais savoir si quelqu'un sait ou je peux trouver un code source(en C ou en java) pour un serveur POP3.Merci
Vérification d'une adresse e-mail [ par Kaneda Shotaro ]
Quelqu'un a-t'il une fonction qui permette de vérifier sir une adresse mail est valide (sans vérifier qu'elle existe réellement)
envoyer un mail en VC++ par SMTP [ par amizak ]
Bonjour tt le monde.je developpe un eapplication pour l'envoie des email avec VC++ en utilisant le protocole smtp.j'utilise ma machine en tant que ser
[MFC]-Serveur MAIL [ par donslim ]
Bonjour à tous,Voilà,je vous explique mon gros problème. Je dois créer un programme accédant à une boîte mail pour vérifier les mails recu. Le serveur
récupérer la pièce jointe d'un mail avec pop3 [ par mailer ]
Bonjour, J'ai développé une application C++ qui envoi et récupère des mails avec SMTP/POP3. Lors de l'envoi, je code mes piè
Client Mail pop3 avec piece-jointe [ par cartes1 ]
Bonjour Quelle est la différence entre la réception Pop3 du corps de texte d'un message et la reception d'une piece-jointe: en effet les codes-sources
script shell d' envoi log par mail [ par Negritson ]
Bonjour à tous, Je voudrais envoyer directement par mail les logs d'erreurs d'un fichier sur lequel ecrivent d'autres programmes. Voila mon script: #
connecter un serveur domino en c [ par wassimbazmi ]
Bonjour tout le monde, Quelqu'un pourrait il me dire quel API C utiliser pour pouvoir me connecter à un serveur domino dans le but de faire une ap
aide creation serveur t'chat [ par crazygoth ]
Bonjour Je dois réaliser un projet qui consiste a faire un serveur de t'chat en c sous Linux. je précise que je débute sous Linux et c également. Ma
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|