I am using the smtp.gmail.com server to send my self an email, but it's not working idk why. Here is my code:
Code:
#include <iostream>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
// Initialise Winsock
WSADATA WsaDat;
if(WSAStartup(MAKEWORD(2,2),&WsaDat)!=0)
{
std::cout<<"Winsock error - Winsock initialization failed\r\n";
WSACleanup();
system("PAUSE");
return 0;
}
// Create our socket
SOCKET Socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(Socket==INVALID_SOCKET)
{
std::cout<<"Winsock error - Socket creation Failed!\r\n";
WSACleanup();
system("PAUSE");
return 0;
}
// Resolve IP address for hostname
struct hostent *host;
if((host=gethostbyname("smtp.gmail.com"))==NULL)
{
std::cout<<"Failed to resolve hostname.\r\n";
WSACleanup();
system("PAUSE");
return 0;
}
// Setup our socket address structure
SOCKADDR_IN SockAddr;
SockAddr.sin_port=htons(587);
SockAddr.sin_family=AF_INET;
SockAddr.sin_addr.s_addr=*((unsigned long*)host->h_addr);
// Attempt to connect to server
if(connect(Socket,(SOCKADDR*)(&SockAddr),sizeof(SockAddr))!=0)
{
std::cout<<"Failed to establish connection with server\r\n";
WSACleanup();
system("PAUSE");
return 0;
}
// Display message from server
char buffer[1000];
memset(buffer,0,999);
int inDataLength=recv(Socket,buffer,1000,0);
std::cout<<buffer;
sprintf(buffer, "HELO smtp.gmail.com\r\n");
send(Socket, buffer, strlen(buffer), 0);
recv(Socket, buffer, sizeof(buffer), 0);
std::cout<<buffer;
sprintf(buffer, "STARTTLS\r\n");
send(Socket, buffer, strlen(buffer), 0);
recv(Socket, buffer, sizeof(buffer), 0);
std::cout<<buffer;
sprintf(buffer, "MAIL FROM:<****@gmail.com>\r\n");
send(Socket, buffer, strlen(buffer), 0);
recv(Socket, buffer, sizeof(buffer), 0);
std::cout<<buffer;
sprintf(buffer, "RCPT TO:<*****@gmail.com>\r\n");
send(Socket, buffer, strlen(buffer), 0);
recv(Socket, buffer, sizeof(buffer), 0);
std::cout<<buffer;
sprintf(buffer, "DATA\r\n");
send(Socket, buffer, strlen(buffer), 0);
recv(Socket, buffer, sizeof(buffer), 0);
std::cout<<buffer;
sprintf(buffer, "Subject:FIRST EMAIL WITH C++!\r\n");
send(Socket, buffer, strlen(buffer), 0);
recv(Socket, buffer, sizeof(buffer), 0);
std::cout<<buffer;
sprintf(buffer, "From: ****@gmail.com\r\n");
send(Socket, buffer, strlen(buffer), 0);
recv(Socket, buffer, sizeof(buffer), 0);
std::cout<<buffer;
sprintf(buffer, "To: *****@gmail.com\r\n");
send(Socket, buffer, strlen(buffer), 0);
recv(Socket, buffer, sizeof(buffer), 0);
std::cout<<buffer;
sprintf(buffer, "HELLO GOD\r\n");
send(Socket, buffer, strlen(buffer), 0);
recv(Socket, buffer, sizeof(buffer), 0);
std::cout<<buffer;
sprintf(buffer, "\r\n. \r\n");
send(Socket, buffer, strlen(buffer), 0);
recv(Socket, buffer, sizeof(buffer), 0);
std::cout<<buffer;
sprintf(buffer, "QUIT\r\n");
send(Socket, buffer, strlen(buffer), 0);
recv(Socket, buffer, sizeof(buffer), 0);
std::cout<<buffer;
// Shutdown our socket
shutdown(Socket,SD_SEND);
// Close our socket entirely
closesocket(Socket);
// Cleanup Winsock
WSACleanup();
system("PAUSE");
return 0;
}