Email-Versand: Fehler bei SSPI-Aufruf

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von SchorschCode.

    Email-Versand: Fehler bei SSPI-Aufruf

    Hallo zusammen,

    mit folgendem Code möchte ich Emails versenden, was damit auch prima funktioniert:

    VB.NET-Quellcode

    1. Dim MyEmail As New MailMessage
    2. With MyEmail
    3. .From = New MailAddress(strMEINE_EMAILADRESSE)
    4. .To.Add(strEMPFAENGER)
    5. .Subject = "Dies ist der Betreff"
    6. .Body = "Dies ist der Text der Email"
    7. .DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure
    8. End With
    9. Dim smtp As New SmtpClient("smtp.strato.de")
    10. With smtp
    11. .UseDefaultCredentials = True
    12. .Credentials = New Net.NetworkCredential(strUSER, strPASSWORD)
    13. .EnableSsl = True
    14. .Port = 587
    15. .DeliveryMethod = SmtpDeliveryMethod.Network
    16. .Send(MyEmail)
    17. End With


    Wichtig ist hier der Client: smtp.strato.de
    Mit dem geht es nämlich nicht. Die Fehlermeldung lautet:

    System.Security.Authentication.AuthenticationException: Fehler bei SSPI-Aufruf, siehe interne Ausnahme. --->
    System.ComponentModel.Win32Exception: Die angeforderte Funktion wird nicht unterstützt

    Noch ein paar Infos (weiß nicht, ob das wichtig ist):
    .net Framwork ist 4.6.1, Ziel-CPU ist x64

    Hat jemand eine Idee, was da falsch ist? Wie bereits geschrieben, der Code funktioniert bei vielen anderen Providern, nur nicht bei Strato.

    Bin für jeden Hinweis dankbar!

    Gruß, Schorsch
    Hi, danke für Deine Antwort.

    Der Port 465 geht ebenfalls nicht. Meine Recherche hat auch ergeben, dass dieser Port nicht mehr benutzt wird bzw. benutzt werden sollte:

    Email senden directSLL auf Port 465

    Fehlermeldung bei Port 465:

    Von der Übertragungsverbindung können keine Daten gelesen werden: net_io_connectionclosed

    Das ist also leider nicht die Lösung.

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

    Kannst du mal probieren das hier als allererstes in deinem Programm auszuführen?

    VB.NET-Quellcode

    1. ServicePointManager.Expect100Continue = True
    2. ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
    3. 'Oder:
    4. System.Net.ServicePointManager.ServerCertificateValidationCallback = Function(s, cert, chain, sslPolicyErrors)
    5. Return True
    6. End Function


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza
    Hallo xored,

    vielen Dank! Das funktioniert bestens!

    Der ganze Code sieht jetzt so aus:

    VB.NET-Quellcode

    1. Dim MyEmail As New MailMessage
    2. With MyEmail
    3. .From = New MailAddress(strMEINE_EMAILADRESSE)
    4. .To.Add(strEMPFAENGER)
    5. .Subject = strSUBJECT
    6. .Body = strBODY
    7. .DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure
    8. End With
    9. Dim smtp As New SmtpClient("smtp.strato.de")
    10. ServicePointManager.Expect100Continue = True
    11. ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
    12. With smtp
    13. .UseDefaultCredentials = True
    14. .Credentials = New Net.NetworkCredential(strUSER, strPASSWORD)
    15. .EnableSsl = True
    16. .Port = 587
    17. .DeliveryMethod = SmtpDeliveryMethod.Network
    18. .Send(MyEmail)
    19. End With


    ACHTUNG! Entgegen der Angabe von Strato muss hier der Port 587 eingesetzt werden, nicht 465!