using System;
using System.IO;
using System.Net.Sockets;
namespace SMTPConnect
{
class Class1
{
static void Main(string[] args)
{
string strServer = "meinSMTPSever"; //Server Adresse eintragen
string fromEmail = ""; //Email Adresse eintragen
string toEmail = ""; //Email Adresse eintragen
DateTime dtNow = DateTime.Now;
string resp = String.Empty;
int sPort = 25; //Telnet Port
TcpClient client = new TcpClient();
Console.WriteLine("Connecting to " + strServer + " : {0} .....", sPort);
client.Connect(strServer,sPort);
Console.WriteLine("Connected...");
NetworkStream stream = client.GetStream();
StreamReader reader = new StreamReader(stream);
StreamWriter writer = new StreamWriter(stream);
if (getResponse(reader, ref resp))
{
Console.WriteLine(resp);
sendCMD (writer, "HELO FROM www.via.de");
if (getResponse(reader, ref resp))
{
Console.WriteLine(resp);
sendCMD (writer, "MAIL FROM: " + fromEmail);
if (getResponse(reader, ref resp))
{
Console.WriteLine(resp);
sendCMD (writer, "RCPT TO: " + toEmail);
if (getResponse(reader, ref resp))
{
Console.WriteLine(resp);
sendCMD (writer, "DATA");
if (getResponse(reader, ref resp))
{
Console.WriteLine(resp);
resp = String.Format("{0:dd MMM yy hh:mm:ss}", dtNow );
sendCMD (writer, "Date: " + resp);
sendCMD (writer, "From: " + fromEmail);
sendCMD (writer, "To: " + toEmail);
sendCMD (writer, "Subject: SMTP Engine");
sendCMD (writer, "Bodycontent\n works, aint it?");
sendCMD (writer, ".");
if (getResponse(reader, ref resp))
{
Console.WriteLine(resp);
sendCMD (writer, "QUIT");
if (getResponse(reader, ref resp))
{
Console.WriteLine(resp);
}
}
}
}
}
}
}
client.Close();
Console.WriteLine("\n Press Enter to continue...");
Console.Read();
}
private static void sendCMD (StreamWriter w, string cmd)
{
w.WriteLine(cmd);
w.Flush();
}
private static bool getResponse(StreamReader r, ref string resp)
{
int iReturn = 0;
bool rBool = false;
string tmp = String.Empty;
resp = r.ReadLine();
if (resp.Length >= 3 && Char.IsNumber(resp[0]) && Char.IsNumber(resp[1])
&& Char.IsNumber(resp[2]))
{
tmp = "" + resp[0] + resp[1] + resp[2];
iReturn = Convert.ToInt16(tmp);
}
if (iReturn == 220 || iReturn == 221 || iReturn == 250 || iReturn == 354) rBool = true;
return rBool;
}
}
}