Les dejo el código:
#include
#include "winsock2.h"
#pragma comment(lib,"Shell32.lib")
#pragma comment(lib,"Advapi32.lib")
#pragma comment(lib,"Ws2_32.lib")
SOCKET SMTPSock;
void rd() {
char recvbuf[512] = "";
recv(SMTPSock, recvbuf, 512, 0);
printf("Server - %s\n", recvbuf);
}
void snd(char * cmd, int ret) {
printf("Client - %s\n", cmd);
send(SMTPSock, cmd, strlen(cmd), 0);
if (ret > 0) { rd(); }
}
void sendmail(char * to, char * subject, char * mess)
{
char To[265], Subject[256], Mess[256];
strcpy(To, "RCPT TO:");
strcat(To, to);
strcat(To, "\r\n\0");
strcpy(Subject, "SUBJECT:");
strcat(Subject, subject);
strcat(Subject, "\r\n\0");
strcpy(Mess, mess);
strcat(Mess, "\r\n.\r\n\0");
WSADATA wsaData;
int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR)
printf("Error at WSAStartup()\n");
SMTPSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (SMTPSock == INVALID_SOCKET) {
printf("Error at socket(): %ld\n", WSAGetLastError());
WSACleanup();
return;
}
sockaddr_in clientService;
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr("MYIP");
clientService.sin_port = htons(25);
if (connect(SMTPSock, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) {
printf( "Failed to connect.\n" );
WSACleanup();
return;
}
rd();
snd("HELO\r\n", 1);
snd("MAIL FROM:Servidores\r\n", 1);
snd(To, 1);
snd("DATA\r\n", 1);
snd(Subject, 0);
snd(Mess, 0);
snd("QUIT\r\n", 1);
WSACleanup();
}
void main() {
__int64 tspace, fspace;
SHGetDiskFreeSpaceEx("C:\\", NULL, (PULARGE_INTEGER) &tspace, (PULARGE_INTEGER) &fspace);
tspace = (tspace / 1024) / 1024;
fspace = (fspace / 1024) / 1024;
if (fspace < (tspace/2)) {
char buffer[256], buffer2[50], subject[256];
DWORD dw = 50;
sprintf(buffer, "El servidor cuenta con: %I64dMb/%I64dMb", fspace, tspace);
printf("OK1");
GetComputerName(buffer2, &dw);
printf("OK2");
strcpy(subject, "Espacio en disco muy bajo en ");
strcat(subject, buffer2);
printf("OK3");
sendmail("Simio Geek", subject, buffer);
}
return;
}
No hay comentarios:
Publicar un comentario