For at sende mails skal man bruge SMTP (Simple Mail Transfer Protocol) protokollen, og den er ret kompliceret med MIME typer, logins og alt muligt andet lir. Følgende stump kode kan sende en simpel mail på de fleste SMTP servere (ikke alle desværre), og der bliver ikke tjekket for fejl:
#include "Net.h"
#include "Exception.h"
#include "IPAddress.h"
#include "TCPSocket.h"
#include <cstdlib>
#include <sstream>
#include <string>
using namespace std;
int main(int argc, char ** argv)
{
try
{
netInit();
string server;
string receiver;
string sender;
string subject;
string body;
string temp;
SInt32 bytesRead;
char buffer[256];
cout << "Angiv SMTP server: ";
cout.flush();
getline(cin,server);
cout << "Angiv modtager e-mail adresse: ";
cout.flush();
getline(cin,receiver);
cout << "Angiv afsender e-mail adresse: ";
cout.flush();
getline(cin,sender);
cout << "Angiv emne: ";
cout.flush();
getline(cin,subject);
cout << "Skriv mail body. Tom linje for at afslutte:" << endl;
do
{
getline(cin,temp);
body += temp + "\\r\\n";
} while(temp != "");
cout << "Sender mail!" << endl << endl;
IPAddress ip(server);
TCPSocket socket(ip,25);
socket.connect();
temp = "MAIL FROM:" + sender + "\\r\\n";
cout << temp;
socket.write(temp.c_str(),temp.size());
bytesRead = socket.read(buffer,256);
cout.write(buffer,bytesRead);
temp = "RCPT TO:" + receiver + "\\r\\n";
cout << temp;
socket.write(temp.c_str(),temp.size());
bytesRead = socket.read(buffer,256);
cout.write(buffer,bytesRead);
temp = "DATA\\r\\n";
cout << temp;
socket.write(temp.c_str(),temp.size());
bytesRead = socket.read(buffer,256);
cout.write(buffer,bytesRead);
temp = "Subject: " + subject + "\\r\\n";
temp += body + "\\r\\n.\\r\\n";
cout << temp;
socket.write(temp.c_str(),temp.size());
bytesRead = socket.read(buffer,256);
cout.write(buffer,bytesRead);
socket.close();
netRelease();
} catch (Exception & ex)
{
cout << ex << endl;
}
return 0;
}
Koden bruger klasserne fra netværks artiklerne.
Det er ikke sikkert, at det virker med din server, da den måske kræver login.
For at lære mere om SMTP kan du læse RFC 821:
http://www.ietf.org/rfc/rfc0821.txt[Redigeret d. 23/04-04 10:30:24 af Robert Larsen]