Mail-Client mit TLS



  • Hallo zusammen,

    ich versuche gerade einen Mail-Client zu schreiben.
    Der soll einfach nur eine kurze Text-Nachricht an eine bestimmte Adresse verschicken.
    Habe ein kurzes Programm aus dem Netz, das leider nicht funktioniert.
    Es geht nur mit ungeschützten Mailservern über Port 25.
    Wenn ich kommerzielle Mail-Server mit echten Adressen verwende, dann geht es leider nicht.
    Es kommt leider nur die Meldung "Fehler beim Mail-Versand", also unspezifisch.
    Was läuft falsch?

    using System;
    using System.Net;
    using System.Net.Mail;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace TLSMail
    {
        class Program
        {
            static void Main()
            {
                var smtpClient = new SmtpClient("mail.gmx.net", 587) // 587 ist der Standardport für TLS/STARTTLS
                {
                    Credentials = new NetworkCredential("ich@gmx.net", "meinpw"),
                    EnableSsl = true
                };
    
                var mail = new MailMessage(
                    from: "ich@gmx.net",
                    to: "ein.anderer@web.de",
                    subject: "Testmail mit TLS",
                    body: "Dies ist eine Testmail, gesendet über TLS."
                );
    
                try
                {
                    smtpClient.Send(mail);
                    Console.WriteLine("E-Mail erfolgreich gesendet!");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Fehler beim Senden: " + ex.Message);
                }
            }
        }
    }
    

    Vielen Dank



  • @elmut19 sagte in Mail-Client mit TLS:

    Ich habe noch nie Mails per C# versendet. Aber ein paar Dinge fallen mir auf:

    • Welche Art von Exception wird geworfen? SmtpException?, SmtpFailedRecipientException? Siehe SmtpClient.Send Method
    • Hast du mal MailKit ausprobiert? Da steht in der MSDN nämlich drin das SmtpClient veraltet ist.


  • @Quiche-Lorraine
    Je nachdem, was für einen Mailserver ich verwende (Wir haben auch einen eigenen, kommen folgende Meldungen:

    • die oben genannte (zumindest sehr ähnlich, wenn ich gmx, web.de verwende)
    • "Das Remotezertifikat ist laut Validierungsverfahren ungültig" (intern)
    • "Postfach nicht verfügbar. Die Serverantwort war: 5.7.54 SMTP; Unable to relay recipient in non-accepted domain" (mit eigenem Server nach z.B. gmx)
      Bei der letzten könnte es so sein, da evtl. doch über einen anderen eigenen versand wird.

    Mein ToDo: Es soll eine Maschine überwacht werden, die einen Alarm raussendet, wenn was nicht stimmt.


  • Administrator

    Ich nehme an, es kommt auf der Konsole "Fehler beim Senden: Fehler beim Mail-Versand"? Interessant wäre aber, was die tatsächliche Exception ist. Könntest du die Ausgabe in der Catch-Anweisung abändern, damit die ganze Exception ausgegeben wird und nicht nur die Message:
    Console.WriteLine("Fehler beim Senden: " + ex);


Anmelden zum Antworten