Skip to content

Instantly share code, notes, and snippets.

Created April 30, 2016 23:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/8690d18e950e3ad9830c183249b9a014 to your computer and use it in GitHub Desktop.
Save anonymous/8690d18e950e3ad9830c183249b9a014 to your computer and use it in GitHub Desktop.
//Client server skeleton - sorry, not much meat in this one:-)
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <fstream>
#include "instructor.h"
using namespace std;
using namespace System;
#define CRLF "\r\n"
ifstream infile;
int main(int argc , char *argv[])
{
WSADATA wsaData;
char server[15] = "smtp.";
int socketNO;
int port = 25;
string fromEmail, toEmail, Subject, ToSend;
char fromEmailAddress[64];
char toEmailAddress[64];
char msgSubject[64];
char msgToSend[255];
char buffer[4096];
char msgLine[255];
//Gets input from file
infile.open("myfile.txt");
while (!infile.eof()){
getline(infile, fromEmail);
getline(infile, toEmail);
getline(infile, Subject);
getline(infile, ToSend);
}
infile.close();
//Converts file inputs to char arrays
for (int i = 0; i < fromEmail.size(); i++)
fromEmailAddress[i] = fromEmail[i];
for (int i = 0; i < toEmail.size(); i++)
toEmailAddress[i] = toEmail[i];
for (int i = 0; i < Subject.size(); i++)
msgSubject[i] = Subject[i];
for (int i = 0; i < ToSend.size(); i++)
msgToSend[i] = ToSend[i];
int iResult;
// Initialize Winsock
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != 0) {
printf("WSAStartup failed: %d\n", iResult);
return 1;
}
socketNO = socket(AF_INET, SOCK_STREAM, 0);
int connected = connectToHost(socketNO, server, port);
recv(socketNO, buffer, sizeof(buffer), 0);
// Send HELO server.com
sprintf(msgLine, "HELO %s%s", server, CRLF);
send(socketNO, msgLine, strlen(msgLine), 0);
recv(socketNO, buffer, sizeof(buffer), 0);
// Send MAIL FROM: <sender@mydomain.com>
sprintf(msgLine, "MAIL FROM:<%s>%s", fromEmailAddress, CRLF);
send(socketNO, msgLine, strlen(msgLine), 0);
recv(socketNO, buffer, sizeof(buffer), 0);
// Send RCPT TO: <receiver@domain.com>
sprintf(msgLine, "RCPT TO:<%s>%s", toEmailAddress, CRLF);
send(socketNO, msgLine, strlen(msgLine), 0);
recv(socketNO, buffer, sizeof(buffer), 0);
// Send Subject
sprintf(msgLine, "Subject:<%s>%s", msgSubject, CRLF);
send(socketNO, msgLine, strlen(msgLine), 0);
recv(socketNO, buffer, sizeof(buffer), 0);
// Send DATA
sprintf(msgLine, "Data:<%s>%s", msgToSend, CRLF);
send(socketNO, msgLine, strlen(msgLine), 0);
recv(socketNO, buffer, sizeof(buffer), 0);
// Send blank line and a period
sprintf(msgLine, "%s.%s", CRLF, CRLF);
send(socketNO, msgLine, strlen(msgLine), 0);
recv(socketNO, buffer, sizeof(buffer), 0);
// Send QUIT
sprintf(msgLine, "QUIT%s", CRLF);
send(socketNO, msgLine, strlen(msgLine), 0);
recv(socketNO, buffer, sizeof(buffer), 0);
// Report message has been sent
cout << "Sent " << msgToSend << " as email message to " << toEmailAddress << endl;
// Close server socket and prepare to exit.
closesocket(socketNO);
WSACleanup();
system("Pause");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment