Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define WIN32_LEAN_AND_MEAN
- #define New_Line "\r\n"
- #include <iostream>
- #include<WinSock2.h>
- using namespace std;
- #include<string>
- #pragma comment (lib, "Ws2_32.lib")
- #include<process.h>
- #include<Windows.h>
- #include<conio.h>
- #include<stdio.h>
- #include "auto_ptr.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <fstream>
- #include <windows.h>
- #include <winsock2.h>
- void AppEnd();
- int eMailSend(const char const *Title, const char const *Message, const char const *from, const char const *To);
- bool Check(int iStatus)
- {
- if(iStatus == SOCKET_ERROR || !iStatus)
- cerr<< "error had Occured" << "eMailSend failed." << endl;
- return iStatus == SOCKET_ERROR || !iStatus;
- }
- int main()
- {
- SetConsoleTitle("Sockets training");
- if(eMailSend("Check", "is it Working?", MyMail, MyMail))
- cerr<< "fatal error while sending the email";
- AppEnd();
- return 0;
- }
- int eMailSend(const char const *Title, const char const *Message, const char const *from, const char const *To)
- {
- int iProtocolPort = 0;
- const char SmtpServerName[64] = "smtp.internetlibero.it";
- char Buffer[64] = "";
- char MsgLine[500];
- SOCKET hServer;
- LPHOSTENT lpHostEntry;
- LPSERVENT lpServEntry;
- SOCKADDR_IN SockAddr;
- // Attempt to intialize WinSock (1.1 or later)
- WSADATA wsaData;
- if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
- {
- cerr << "WSADATA failed";
- AppEnd();
- }
- // Lookup email server's IP address.
- lpHostEntry = gethostbyname(SmtpServerName);
- if(!lpHostEntry)
- {
- cout << "Cannot find SMTP mail server " << SmtpServerName << endl;
- return -1;
- }
- // Create a TCP/IP socket, no specific protocol
- hServer = socket(PF_INET, SOCK_STREAM, 0);
- if(hServer == INVALID_SOCKET)
- {
- cout << "Cannot open mail server socket" << endl;
- return -1;
- }
- // Get the mail service port
- lpServEntry = getservbyname("mail", 0);
- // Use the SMTP default port if no other port is specified
- if(!lpServEntry)
- iProtocolPort = htons(25);
- else
- iProtocolPort = lpServEntry->s_port;
- // Setup a Socket Address structure
- SockAddr.sin_family = AF_INET;
- SockAddr.sin_port = iProtocolPort;
- SockAddr.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
- // Connect the Socket
- if(connect(hServer, (PSOCKADDR) &SockAddr, sizeof(SockAddr)))
- {
- cout << "Error connecting to Server socket" << endl;
- return -1;
- }
- // Receive initial response from SMTP server
- if(Check(recv(hServer, Buffer, sizeof(Buffer), 0))) return -1;
- // Send HELO server.com
- sprintf(MsgLine, "HELO %s%s", SmtpServerName, New_Line);
- if(Check(send(hServer, MsgLine, strlen(MsgLine), 0))) return -1;
- Check(recv(hServer, Buffer, sizeof(Buffer), 0));
- // Send MAIL FROM: <sender@mydomain.com>
- sprintf(MsgLine, "MAIL FROM:<%s>%s", from, New_Line);
- if(Check(send(hServer, MsgLine, strlen(MsgLine), 0))) return -1;
- if(Check(recv(hServer, Buffer, sizeof(Buffer), 0))) return -1;
- // Send RCPT TO: <receiver@domain.com>
- sprintf(MsgLine, "RCPT TO:<%s>%s", To, New_Line);
- if(Check(send(hServer, MsgLine, strlen(MsgLine), 0))) return -1;
- if(Check(recv(hServer, Buffer, sizeof(Buffer), 0))) return -1;
- // Send DATA
- sprintf(MsgLine, "DATA%s", New_Line);
- if(Check(send(hServer, MsgLine, strlen(MsgLine), 0))) return -1;
- if(Check(recv(hServer, Buffer, sizeof(Buffer), 0))) return -1;
- // Send blank line and a period
- sprintf(MsgLine, "%s.%s", New_Line, New_Line);
- if(Check(send(hServer, MsgLine, strlen(MsgLine), 0))) return -1;
- if(Check(recv(hServer, Buffer, sizeof(Buffer), 0))) return -1;
- // Send QUIT
- sprintf(MsgLine, "QUIT%s", New_Line);
- if(Check(send(hServer, MsgLine, strlen(MsgLine), 0))) return -1;
- if(Check(recv(hServer, Buffer, sizeof(Buffer), 0))) return -1;
- // Close server socket and prepare to exit.
- closesocket(hServer);
- return 0;
- }
- void AppEnd()
- {
- cout << "\nEnd of program.";
- if (WSACleanup() == SOCKET_ERROR)
- {
- cout<<"\nWSACleanup failed with error " << WSAGetLastError() << '\n';
- }
- _flushall();
- _getch();
- exit(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement