SMTP über Telnet mit c#

25/08/2009 - 16:55 von Andrej Golubew | Report spam
Hallo zusammen,

ich versuche eine Dialog mit SMTP Server zu basteln.

So sieht es aus:

Socket _socket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
_socket.Connect("10.3.35.80", 25);

byte[] recvData = new byte[1024];
_socket.Receive(recvData);

Console.WriteLine(Encoding.ASCII.GetString(recvData));

byte[] sendData = System.Text.Encoding.ASCII.GetBytes("HELO");
_socket.Send(sendData, sendData.Length, SocketFlags.None);

_socket.Receive(recvData);

Console.WriteLine(Encoding.ASCII.GetString(recvData));

_socket.Shutdown(SocketShutdown.Both);
_socket.Disconnect(true);

Ich bekomme:
220 EXSERVER01.peguform.local Microsoft ESMTP MAIL Service, Version:
6.0.3790.3959
ready at Tue, 25 Aug 2009 16:50:49 +0200

Muss aber so sein:

220 EXSERVER01.peguform.local Microsoft ESMTP MAIL Service, Version:
6.0.3790.3959
ready at Tue, 25 Aug 2009 16:50:49 +0200
HELO
250 EXSERVER01.peguform.local Hello [10.3.99.1]

Die Zeile "250 EXSERVER01.peguform.local Hello [10.3.99.1]" bekomme ich
nicht zurück. Obwouhl ich eine send durchgeführt hab.
 

Lesen sie die antworten

#1 Peter Brenner
25/08/2009 - 18:24 | Warnen spam
Andrej Golubew wrote:

Hallo zusammen,

ich versuche eine Dialog mit SMTP Server zu basteln.

So sieht es aus:



[snip]


Ich bekomme:
220 EXSERVER01.peguform.local Microsoft ESMTP MAIL Service, Version:
6.0.3790.3959
ready at Tue, 25 Aug 2009 16:50:49 +0200

Muss aber so sein:

220 EXSERVER01.peguform.local Microsoft ESMTP MAIL Service, Version:
6.0.3790.3959
ready at Tue, 25 Aug 2009 16:50:49 +0200
HELO
250 EXSERVER01.peguform.local Hello [10.3.99.1]

Die Zeile "250 EXSERVER01.peguform.local Hello [10.3.99.1]" bekomme ich
nicht zurück. Obwouhl ich eine send durchgeführt hab.



Aber dann wohl zu ungeduldig warst. Ich baue mir um die Receives immer
was in der Art:


if (_socket.Poll(1000, SelectMode.SelectRead))
{
System.Threading.Thread.Sleep(100);
_socket.Receive(recvData);
}
else
{
Console.WriteLine("Sorry...");
}

Den timeout bei Poll natürlich sinnvoll setzen.

Bis dann
Peter

Ähnliche fragen