Mail Versand mit TLS 1.2 auf VB.NET Umgebung

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 32 Antworten in diesem Thema. Der letzte Beitrag () ist von mgbig.

    ThSch67 schrieb:

    TLs12 ist kein Member von "System.Net.SecurityProtocolType"
    Welches Framework, welches Betriebssystem?

    Wenn das Betriebssystem mitmacht und nur das Framework den Enumarationswert nicht enthält, kannst du ggf. den Wert 3072 verwenden.
    learn.microsoft.com/de-de/dotn…protocoltype?view=net-7.0
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Moin

    ich hole das hier nochmal hoch. Ionos schreibt mir, dass immer noch die beiden E-Mails betroffen sind, mit denen ich aus dem Programm versende. Also scheint das noch nicht so zu funktionieren wie es soll. Dann muss ich mich jetzt doch mit den weiter oben genannten Lösungen beschäftigen, oder?
    Kann das auch mit dem Framework4.5 zusammenhängen?
    Aber es gibt je mit

    Quellcode

    1. ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

    auch keine Fehlermeldung....

    mgbig
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )
    @mgbig

    Vielleicht verbindest Du immer noch mit dem falschen Server/Port.
    Das sind die korrekten Ports:

    pop3.ionos.de
    smtp.ionos.de

    POP3: 995 / SSL aktiviert
    SMTP: 465 / SSL aktiviert
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at

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

    Da habe ich tatsächlich einen Fehler gemacht, bei mir ist der Port 587

    Aber wenn ich das ändere und das dann so aussieht

    Quellcode

    1. ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
    2. Dim message As New MailMessage("noreply@domain.de", empfaenger, Betreff, Nachricht)
    3. message.ReplyToList.Add(ReplyToMail)
    4. Dim emailClient As New SmtpClient("smtp.ionos.de")
    5. emailClient.Credentials = New Net.NetworkCredential("noreply@domain.de", "PW")
    6. emailClient.Port = 465
    7. emailClient.Send(message)


    Dann gibt es einen Fehler und nix wird gesendet.

    Der Fehler sieht so aus:

    Quellcode

    1. System.Net.Mail.SmtpException: "Fehler beim Senden von Mail."
    2. Innere Ausnahme
    3. IOException: Von der Übertragungsverbindung können keine Daten gelesen werden: net_io_connectionclosed.
    4. Diese Ausnahme wurde ursprünglich bei dieser Aufrufliste ausgelöst:
    5. System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(byte[], int, int, bool)
    6. System.Net.Mail.SmtpReplyReaderFactory.ReadLines(System.Net.Mail.SmtpReplyReader, bool)
    7. System.Net.Mail.SmtpReplyReaderFactory.ReadLine(System.Net.Mail.SmtpReplyReader)
    8. System.Net.Mail.SmtpConnection.GetConnection(System.Net.ServicePoint)
    9. System.Net.Mail.SmtpTransport.GetConnection(System.Net.ServicePoint)
    10. System.Net.Mail.SmtpClient.GetConnection()
    11. System.Net.Mail.SmtpClient.Send(System.Net.Mail.MailMessage)


    Es wird grad schlimmer, was tun?
    mgbig
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )
    Also so:

    Quellcode

    1. ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
    2. Dim message As New MailMessage("noreply@domain.de", empfaenger, Betreff, Nachricht)
    3. message.ReplyToList.Add(ReplyToMail)
    4. Dim emailClient As New SmtpClient("smtp.ionos.de")
    5. emailClient.EnableSsl = True
    6. emailClient.Credentials = New Net.NetworkCredential("noreply@domain.de", "PW")
    7. emailClient.Port = 465
    8. emailClient.Send(message)


    gibt leider den gleichen Fehler....
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )

    BlueLagoonX schrieb:

    Der Standard SmtpClient aus dem Framework unterstützt kein SSL, nur TLS.
    Verwende Port 587 statt 465.


    ok. Das geht. Aber findet dann ein Versant mit TLS 1.2 statt?
    Laut Ionos soll es Port 465 sein.

    Dann müsste das hier aber eigentlich falsch sein:

    Quellcode

    1. ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
    2. Dim message As New MailMessage("noreply@domain.de", empfaenger, Betreff, Nachricht)
    3. message.ReplyToList.Add(ReplyToMail)
    4. Dim emailClient As New SmtpClient("smtp.ionos.de")
    5. emailClient.EnableSsl = True
    6. emailClient.Credentials = New Net.NetworkCredential("noreply@domain.de", "PW")
    7. emailClient.Port = 587
    8. emailClient.Send(message)


    da sowohl Tls 1.2 als alch SSL genutz werden soll. Es gibt aber keine Fehler?

    Vielleicht muss ich doch einen anderen Smtp Client nutzen?
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )

    BlueLagoonX schrieb:

    Genau aus solchen Gründen nehme ich gern MailKit, gibts über NuGet zum Herunterladen.


    ok. Noch nie mit NuGet gearbeitet, aber das war jetzt das erste mal und sehr einfach. Danke

    Ich habe jetzt mit diesem Code Erfolg

    Quellcode

    1. Sub Mail_senden_kit(empfaenger As String, betreff As String, Nachricht As String)
    2. Dim message = New MimeMessage()
    3. message.From.Add(New MailboxAddress("Name", "noreply@domain.de"))
    4. message.[To].Add(New MailboxAddress("", empfaenger))
    5. message.Subject = betreff
    6. message.Body = New TextPart("plain") With {
    7. .Text = Nachricht
    8. }
    9. Using client = New SmtpClient()
    10. client.Connect("smtp.ionos.de", 465, True)
    11. client.Authenticate("noreply@domain.de", "1111111")
    12. client.Send(message)
    13. client.Disconnect(True)
    14. End Using
    15. End Sub


    Aber wer sagt mir, dass hier mit TLS 1.2 gesendet wird? Danke
    mgbig
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )

    VB.NET-Quellcode

    1. Dim BB As New MimeKit.BodyBuilder
    2. With BB
    3. .TextBody = ""
    4. End With
    5. Using MailClient As New MailKit.Net.Smtp.SmtpClient()
    6. Using Message As New MimeKit.MimeMessage
    7. With Message
    8. .From.Add(MimeKit.InternetAddress.Parse("absender@domain.de"))
    9. .To.Add(MimeKit.InternetAddress.Parse("empfaenger@domain.de"))
    10. .Body = BB.ToMessageBody
    11. .Subject = "Betreff"
    12. .Priority = MimeKit.MessagePriority.Normal
    13. End With
    14. With MailClient
    15. .Connect("smtp.ionos.de", 587, MailKit.Security.SecureSocketOptions.StartTls)
    16. .Authenticate("absender@domain.de", "Password")
    17. .Send(Message)
    18. .Disconnect(True)
    19. End With
    20. End Using
    21. End Using


    Hier mal ein Beispiel wie ich Mailkit verwende. Nimm statt Port 465 (SSL) bitte gleich 587 (TLS), zusammen mit

    Quellcode

    1. ​MailKit.Security.SecureSocketOptions.StartTls
    ok. Danke. Das sieht schon mal gut aus. Jetzt muss ich noch schauen, wie ich eine pdf Datei angehängt bekomme. Dann wäre alles perfekt. Schaue noch mal in die Dokumentation... oder melde mich noch ma :)



    Um das hier mal abzuschließen: Hiermit läuft auch der Versand mit Anhang:

    Quellcode

    1. Dim message = New MimeMessage()
    2. message.From.Add(New MailboxAddress("mgbig", "noreply@domain.de"))
    3. message.[To].Add(New MailboxAddress("", empfaenger))
    4. message.Subject = betreff
    5. Dim body = New TextPart("plain") With {
    6. .Text = Nachricht
    7. }
    8. Dim attachment = New MimePart("document", "txt") With {
    9. .Content = New MimeContent(File.OpenRead("G:\Documents\telefonbuch.txt"), ContentEncoding.[Default]),
    10. .ContentDisposition = New ContentDisposition(ContentDisposition.Attachment),
    11. .ContentTransferEncoding = ContentEncoding.Base64,
    12. .FileName = Path.GetFileName("G:\Documents\telefonbuch.txt")
    13. }
    14. Dim multipart = New Multipart("mixed")
    15. multipart.Add(body)
    16. multipart.Add(attachment)
    17. message.Body = multipart


    Wobei ich hier

    Quellcode

    1. New MimePart("document", "txt")

    ein bisschen ausprobiert habe. So geht eine ASCII Text Datei und wenn statt txt dort pdf steht auch ein pdf Dokument. Ich habe nicht getestet ob auch andere Dateien gehen außer der ursprünglichen gif Datei. Aber ich brauche nichts anderes

    Danke an alle, die sich hier beteiligt haben. Hoffen wir, das Ionos jetzt Ruhe gibt :D

    Beiträge zusammengefügt. ~Thunderbolt
    Ich bin Umsteiger: Früher VB 4.0 prof, heute VB NET unter Studio 2019 Community Edition (und da noch ein Greenhorn :D )

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