|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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
Sources en rapport avec celle ci
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è
Deconnection serveur en C [ par lenneth666 ]
Bonjour j'ai fais un client serveur avec une connection TCP. J'aimerais savoir comment l'on peut gérer la déconnection d'un client ? Il y a
select en C [ par lenneth666 ]
voilà j'ai fais un serveur tout marche parfaitement a part que j'aimerais savoir qd qq'un se connecte au serveur. Donc il faut faire un selec
un serveur unix configure des client windows avec les rpc [ par oussssa ]
bonjour :mon probleme c'est de faire un serveur unix qui va executer des prg ecrite en c# qui controle et configures les @ ip, journal d'e
serveur unix communique avec des clients windows en audio& video>>>>>> svp trés urgent [ par oussssa ]
bonjour :s'il vous plait est ce que vous pouvez m'aider a faire un petit serveur unix qui peut controler et communiquer avec des clients windows
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

HTC G1
Entre 449€ et 449€
|