E Mail senden ich bekomme Error in C# WinForms

  • C#

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von mehmetqan.

    E Mail senden ich bekomme Error in C# WinForms

    Mein Code ist;

    Spoiler anzeigen

    C#-Quellcode

    1. using System.Net;
    2. using System.Net.Mail;
    3. private void emailsenden_Click(object sender, EventArgs e)
    4. {
    5. login = new NetworkCredential(emailid.Text, pw.Text);
    6. client = new SmtpClient(smtptext.Text);
    7. client.Port = Convert.ToInt32(porttext.Text);
    8. client.EnableSsl = chkSSL.Checked;
    9. client.Credentials = login;
    10. msg = new MailMessage { From = new MailAddress(emailid.Text + smtptext.Text.Replace("smtp", "@"), "Lucy", Encoding.UTF8) };
    11. msg.To.Add(new MailAddress(emailan.Text));
    12. if (!string.IsNullOrEmpty(ccText.Text))
    13. msg.To.Add(new MailAddress(ccText.Text));
    14. msg.Subject = betreff.Text;
    15. msg.Body = nachricht.Text;
    16. msg.BodyEncoding = Encoding.UTF8;
    17. msg.IsBodyHtml = true;
    18. msg.Priority = MailPriority.Normal;
    19. msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
    20. client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
    21. string userstate = "Sending...";
    22. client.SendAsync(msg, userstate);
    23. }
    24. private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
    25. {
    26. if (e.Cancelled)
    27. MessageBox.Show(string.Format("{0} senden wurde abgebrochen", e.UserState), "Nachricht", MessageBoxButtons.OK, MessageBoxIcon.Information);
    28. if (e.Error != null)
    29. MessageBox.Show(string.Format("{0} {1}", e.UserState, e.Error), "Nachricht", MessageBoxButtons.OK, MessageBoxIcon.Information);
    30. else
    31. MessageBox.Show("Nachricht wurde erfolgreich gesendet.", "Erfolgreich", MessageBoxButtons.OK, MessageBoxIcon.Information);


    Keine Debugg Error.

    Aber nach alle eingaben und am ende EmailSenden Button Drücken folgende fehler;

    Spoiler anzeigen

    C#-Quellcode

    1. Fehler zu diesen Code
    2. ---> msg = new MailMessage { From = new MailAddress(emailid.Text + smtptext.Text.Replace("smtp", "@"), "Lucy", Encoding.UTF8) };
    3. System.FormatException: "In der E-Mail-Kopfzeile wurde ein ungültiges Zeichen gefunden: "."."
    4. Diese Ausnahme wurde ursprünglich von dieser Aufrufliste ausgelöst:
    5. System.Net.Mail.DotAtomReader.ReadReverse(string, int)
    6. System.Net.Mail.MailAddressParser.ParseDomain(string, ref int)
    7. System.Net.Mail.MailAddressParser.ParseAddress(string, bool, ref int)
    8. System.Net.Mail.MailAddressParser.ParseAddress(string)
    9. System.Net.Mail.MailAddress.MailAddress(string, string, System.Text.Encoding)
    10. Rechnungs_Programm_By_Can.email_einstellungen.emailsenden_Click(object, System.EventArgs) in email-einstellungen.cs
    11. System.Windows.Forms.Control.OnClick(System.EventArgs)
    12. System.Windows.Forms.Button.OnClick(System.EventArgs)
    13. System.Windows.Forms.Button.OnMouseUp(System.Windows.Forms.MouseEventArgs)
    14. System.Windows.Forms.Control.WmMouseUp(ref System.Windows.Forms.Message, System.Windows.Forms.MouseButtons, int)
    15. ...
    16. [Aufrufliste abgeschnitten]


    Danke für eurere Unterstützung!

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Dann lass Dir doch mal anzeigen, was in emailid.Text + smtptext.Text.Replace("smtp", "@") konkret drinsteht und vielleicht ergibt sich automatisch, dass das keine gültige Mailadresse ist. Falls sie doch gültig ist, ist vielleicht ein unsichtbares Zeichen drin. Unwahrscheinlich, aber möglich. Gib die Länge des Strings aus und zähl, ob Du soviele Zeichen siehst.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @mehmetqan Wir können den Inhalt Deiner TextBoxen nicht einsehen.
    Setz einen Haltepunkt auf den Send-Befehl und vergleiche, was drinne stehen SOLL und was tatsächlich drinne steht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    C#-Quellcode

    1. msg = new MailMessage { From = new MailAddress(emailid.Text + smtptext.Text.Replace("smtp", "@"), "Lucy", Encoding.UTF8) };
    Da wird im Inneren der Konstruktor mit 3 Parametern aufgerufen. Parameter 2 und 3 sind klar. Aber um da eine eMail-Adresse à la mehmetqan@vb-paradise.de, muss in emailid.Text mehmetqan drinstehen und in smtptext.Text smtpvb-paradise.de. Wenn dem so ist, musst Du wohl alles erstmal ohne Variablen testen, also die Parameter mit Strings befüllen, z.B.

    C#-Quellcode

    1. msg = new MailMessage { From = new MailAddress("mehmetqan@vb-paradise.de", "Lucy", Encoding.UTF8) };
    . Aber eben nicht nur dort, sondern überall, wo Du bei der Mailerstellung Variablen einsetzt. Und dann absenden. Wenn das klappt, dann einen hartcodierten Text durch die eigentliche Variable ersetzen und wieder testen. Und dann die nächste Textstelle. Irgendwann wird klar, wo der Fehler sitzt: 30 cm vor dem Bildschirm :P . Ist leider in 99,98 % der Fällen so. Ich spreche aus eigener Erfahrung.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Und zu welchem Ergebnis bist Du gekommen? Wo war der Fehler? Das interessiert jetzt nicht (nur) mich, sondern auch andere Benutzer, die zukünftig vor dem gleichen oder ähnlichen Problem stehen (könnten).
    Und: Wenn Du hier fertig bist, dann ganz oben neben dem Titel des Threads ist ein kleines . Da nen Doppelklick drauf und so das Thema als erledigt markieren.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Neu

    LÖSUNG

    Entschuldigt mich.

    Code habe ich jetzt so geschrieben.

    Spoiler anzeigen

    C#-Quellcode

    1. MailMessage mesaj = new MailMessage();
    2. SmtpClient istem = new SmtpClient();
    3. mesaj.Attachments.Add(new Attachment(attachment1.Text));
    4. istem.Credentials = new System.Net.NetworkCredential(emailadresse.Text, emailpw.Text);
    5. istem.Port = Convert.ToInt32(porttext.Text);
    6. istem.Host = smtptext.Text;
    7. istem.EnableSsl = true;
    8. mesaj.To.Add(emailan.Text);
    9. mesaj.From = new MailAddress(emailadresse.Text);
    10. mesaj.Subject = betreff.Text;
    11. mesaj.Body = nachricht.Text;
    12. istem.Send(mesaj);
    13. MessageBox.Show("Erfolgreich", "Mail gesendet.");


    Und damit der user nicht die ganze Zeit seine daten eingeben muss habe ich ein andere form mit Properties erstellt.

    Spoiler anzeigen

    C#-Quellcode

    1. Properties.Settings.Default.standarttext = stani.Text;
    2. Properties.Settings.Default.kullaniciadi = emailadresse.Text;
    3. Properties.Settings.Default.kullanicisifre = emailpw.Text;
    4. Properties.Settings.Default.betreffsettings = standartbetreff.Text;
    5. Properties.Settings.Default.smtpsettings = smtptext.Text;
    6. Properties.Settings.Default.portsettings = porttext.Text;
    7. Properties.Settings.Default.Save();
    8. MessageBox.Show("Deine Daten sind gespeichert.","Gespeichert",MessageBoxButtons.OK,MessageBoxIcon.Information);

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „EaranMaleasi“ ()