SMTP-AUTH-Login Fehler in .NET 2.0

Asterix-Ac

Erfahrenes Mitglied
Hallo Leute,

ich habe die Aufgabe eine Mail mit .NET 2.0 über einen Mail-Server zu senden, der eine SMTP-Authentifizierung erfordert. Doch die regulären Massnahmen lassen meine Applikation immer mit folgender Exception abschmieren:

System.Net.Mail.SmtpException: Mailbox unavailable Server response: 5.7.0 Need authenticate via SMTP-AUTH-Login {mp031}

Hierzu folgender Code :
Code:
private void Button1Click(object sender, System.EventArgs e)
{
	MessageBox.Show("Send-Data");
	MailMessage mail = new MailMessage();
	mail.To.Add("tuppes@du.de");
	mail.From = new MailAddress("ich@mich.de");
	mail.Subject = "Das Subject";
	mail.Body = "Der Body";
	SmtpClient client = new SmtpClient();
	client.Host = "mail.gmx.net";
	//Authentication - start
	string user = "myUserName";
	string pass = "myPassword";
	client.Credentials = new NetworkCredential(user,pass);					
	//Authentication - ende
	client.DeliveryMethod = SmtpDeliveryMethod.Network;
	client.UseDefaultCredentials = false;
	client.Send(mail);	
}

Was mich stutzig macht, ist die Tatsache, dass
Code:
client.Credentials = new NetworkCredential(user,pass);
überall im Netz als SMTP-Authentifizierung propagiert wird, doch wenn man mal in die .NET FW 2.0 Doku dafür schaut, beschreibt die NetworkCredential-Klasse nur folgende Authentifizierungen: Standard, Digest, NTLM und Kerberos. Von SMTP ist keine Rede.

Also ist die Fehlermeldung richtig, weil die Authentifizierungsmethode falsch ist.
Aber wo finde ich die richtige?:confused:

Asterix
 

Norbert Eder

Erfahrenes Mitglied
Die SMTP-Authentifizierung ist auch keine Authentifizierungsmethode. Es ist lediglich die Anmeldung an den SMTP-Dienst und verwendet andere Authentifizierungsmethoden, wie beispielsweise Basic.

Dein Problem tritt ganz gerne bei Freemailern auf, wie auch du einen vernwendest. Wieso verwendest du nicht den SMTP-Server deines Providers?
 

Asterix-Ac

Erfahrenes Mitglied
Hallo Norbert,

danke für Deine schnelle Antwort.
Nachdem ich sie gelesen hatte, war mir klar, dass ich in der SDK-Hilfe schonmal was über Basic und Digest gelesen habe und habe noch ein wenig gegooglet. Aber weder dort noch in der SDK-Hilfe habe ich es wiedergefunden.
Mein Problem ist, dass das Programm(=Dienst) auf unterschiedlichen Rechnern mit sehr unterschiedlichen Netzanbindungen und Providern arbeiten muss. Die einzige Konstante ist mein GMX Account.
Es wäre nett, wenn Du mir ein wenig auf die Sprünge helfen könntest und meine Beispiel-Methode entsprechend abänderst (wenn Du die Lösung weist ;) ), so dass sie mit GMX zusammenarbeitet.

Marcus
 

Norbert Eder

Erfahrenes Mitglied
Also folgender Code funktioniert bei mir einwandfrei:
Code:
MailMessage mailMessage = new MailMessage("username@gmx.at", "testmail@testmail.com", "Testmail", "Dies ist der Body");

SmtpClient sc = new SmtpClient("smtp.gmx.net");
sc.Credentials = new NetworkCredential("{USERNAME}", "{PASSWORD}");
sc.Send(mailMessage);
Wobei {USERNAME} der Emailadresse entspricht.
 

Asterix-Ac

Erfahrenes Mitglied
Hallo Norbert,

also Dein Beispiel hat auch bei mir funktioniert.
Ich wusste gar nicht, dass es einen smtp.gmx.net gibt. Als ich beide mal angepingt habe, stellte sich raus, dass die beiden nur eine IP auseinanderliegen.

Also werde ich nun mal auf Fehlersuche in meinem Code gehen:mad: und den Fehler dann nochmal Posten.

Danke erstmal.

Marcus
 

Asterix-Ac

Erfahrenes Mitglied
OK,

Es war nur eine blöde IF-Verschachtelung die auf null prüfte. Ich lese die Benutzerdaten aus der Registry. Doch leider macht mich #Develop auf solche Mistakes nicht aufmerksam. VS2002, mit dem ich vorher gearbeitet habe, schon.

Danke für die Hilfe,

Marcus