TCP Client für SMTP / String in Base64 wandeln

22/12/2009 - 15:53 von Kai Wiechers | Report spam
Hallo,

ich möchte gern mit dem Compact Framework aus meinem Programm eine eMail
versenden. Dafür möchte ich nicht Pocket Outlook nutzen. System.Web.Mail
wàre zwar großartig, fehlt im Compact Framework aber. Daher möchte ich nun
den TCP Client aus System.Net.Sockets nutzen um meine eMail los zu werden.
Woran es scheitert ist zum einen die Base64 Codierung und zum anderen die
Kommunikation mit dem Mailserver. Ich habe keine Funktion in .NET gefunden
die mir einen String in Base64 Code wandelt und umgekehrt. Gibt es sowas
nicht?
Das größere Problem ist die Kommunikation mit dem Server. Die Verbindung
wird aufgebaut und der Server begrüßt mich mit "220-servername ESMTP Exim
4.69... usw." Wenn ich dann aber ein "EHLO server" sende passiert nichts.
Mein Fehler muss also beim senden liegen. Die Begrüßung kommt ja automatisch
nach dem Verbinden und kann von mir empfangen werden.

Wenn jemand zur einen oder anderen Frage einen Tipp für mich hat wàre ich
super dankbar! Allen schon einmal schöne Festtage!


Mein Test Code schaut so aus:

Imports System.Net

Public Class Form1

Dim client As New Sockets.TcpClient
Dim stream As Sockets.NetworkStream

Dim ende As Boolean
Dim antwort As String

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click

ende = False
antwort = ""

client.Connect("mail.meinserver.de", 25)
stream = client.GetStream

Dim listener As New System.Threading.Thread(AddressOf DatenErhalten)
listener.IsBackground = True
listener.Start()

End Sub

Sub DatenErhalten()

Do
If stream.DataAvailable = True Then
Dim bytes(client.ReceiveBufferSize) As Byte
stream.Read(bytes, 0, CInt(client.ReceiveBufferSize))
Dim returndata As String =
System.Text.Encoding.ASCII.GetString(bytes)
antwort = returndata
End If
If ende = True Then
Exit Do
End If
Loop

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim sendBytes As [Byte]() =
System.Text.Encoding.ASCII.GetBytes(TextBox1.Text)
stream.Write(sendBytes, 0, sendBytes.Length)
TextBox2.Text = TextBox2.Text & vbNewLine & TextBox1.Text
TextBox1.Text = ""
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If antwort <> "" Then
TextBox2.Text = TextBox2.Text & vbNewLine & antwort
antwort = ""
End If
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
ende = True
Application.Exit()
End Sub
End Class
 

Lesen sie die antworten

#1 Armin Zingler
22/12/2009 - 16:15 | Warnen spam
Kai Wiechers schrieb:
Ich habe keine Funktion in .NET gefunden
die mir einen String in Base64 Code wandelt und umgekehrt. Gibt es sowas
nicht?



Symbolsuche -> Base64 (untergeordnete Zeichenfolge)

Ich bekomme diverse Ergebnisse, u.a. System.Convert.ToBase64String


Armin

Ähnliche fragen