Hallo ich finde in meinem Code nicht den Fehler, weil wenn ich eine Email senden möchte ruft er immer den Fehler aus den ich ganz unten definiert habe, ich bitte um Hilfe. Danke
MailMessage mail = new MailMessage();
mail.From = new MailAddress(email.Text+"@"+cb_email1.SelectedItem);
mail.To.Add(empfemail.Text+"@"+cb_email2.SelectedItem);
mail.Subject = betreff.Text;
mail.Priority = MailPriority.Low;
mail.Body = nachricht.Text;
SmtpClient client = new SmtpClient("smtp."+cb_email1.SelectedItem, 25);
try
{
client.Credentials = new System.Net.NetworkCredential(email.Text+"@"+cb_email1.SelectedItem, tb_passwort.Text);
client.Send(mail);
client.EnableSsl = true;
MessageBox.Show("Ihre Email wurde erfolgreich gesendet!","Gesendet", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
catch
{
MessageBox.Show("Die Email konnte nicht erfolgreich gesendet werden!", "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Hallo Fayzon,
dann fang doch mal das Exceptionobjekt ab und schau was drinsteht?! Port, Credentials und Servername sind eine häufige Fehlerquelle...und SSL. Das solltest du vor dem Senden definieren.
catch(Exception exception)
{
//...
}
PS: Pass bitte den Titel an. Er suggeriert einem Lesenden, dass alles in Ordnung ist...
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Sorry, aber Code einfach reinklatschen und sagen "wo ist der Fehler?" ist nicht 😉
Wir machen nicht Deinen Job. Wir erwarten hier auch von Hilfesuchenden etwas Eigeninitiative.
Du hast ein Catch definierst, fängst aber die Exception nicht ab.
Dementsprechend kannst Du auch nicht wisse, was der Fehler ist.
Also schreibe statt catch
auch dementsprechenden catch (Exception e)
und schau Dir mit dem Debugger den Fehler an.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Nein das sollt ihr auch nicht 😄
Also der Fehler lautet: > Fehlermeldung:
Für den SMTP Server ist eine sichere Verbindung erforderlich, oder der Client
wurde nicht authentifiziert. Die Serverantwort war: Must issue a STARTTLS command first
Hallo Fayzon,
bitte benutze die richtigen Code-Tags.
Bitte wähle mal einen korrekten Titel (Der jetzige "Email Programm Funktioniert" ist schlichtweg falsch)
Bitte setz das SSL = true
vor dem Senden. (Und achte auf den Port)
Prüfe die Credentials.
Bitte lies die Antworten hier.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Ok sorry hab das übersehen mit der Fehlermeldung aber danke für den Lösungsvorschlag
Edit: Nun habe ich ein bisschen was am Programm verändert:
MailMessage mail = new MailMessage();
SmtpClient client = new SmtpClient("smtp."+cb_email1.SelectedItem);
if (cb_email1.Text == "web.de")
{
client.Port = 587;
}
if (cb_email1.Text == "gmail.com")
{
client.Port = 587;
}
if (cb_email1.Text == "gmx.net")
{
client.Port = 465;
}
if (cb_email1.Text == "mail.yahoo.com")
{
client.Port = 465;
}
client.Host = email.Text+"@"+cb_email1.SelectedItem;
client.UseDefaultCredentials = false;
mail.From = new MailAddress(email.Text+"@"+cb_email1.SelectedItem);
mail.To.Add(empfemail.Text+"@"+cb_email2.SelectedItem);
mail.Subject = betreff.Text;
mail.Body = nachricht.Text;
client.EnableSsl = true;
try
{
NetworkCredential basicCredential = new NetworkCredential(email.Text+"@"+cb_email1.SelectedItem, tb_passwort.Text);
client.UseDefaultCredentials = false;
client.Credentials = basicCredential;
client.Send(mail);
MessageBox.Show("Ihre Email wurde erfolgreich gesendet!","Gesendet", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
catch(Exception ex)
{
MessageBox.Show("Die Email konnte nicht erfolgreich gesendet werden! Der Fehler lautet: \n"+'"'+ ex.Message+'"', "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Ich habe außerdem die Ports für die einzelnen Provider definiert. Nun bekomme ich nur noch als Fehlermeldung: > Fehlermeldung:
Fehler beim Senden von Mail.
Gibt es auch eine
ex.InnerException.ToString()
?
ToString
funktioniert; ist aber eher suboptimal, besser wäre direkt auf InnerException.Message
zuzugreifen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code