Email über SMTP mit Attachment senden

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

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Script1.

    Email über SMTP mit Attachment senden

    Hallo,
    ich möchte gerne eine Email mit Attachment senden, nur das klappt leider nicht. Er spuckt keine Fehlermeldung aus, ich bekomme aber keine Email.
    Viele Email Anbieter machen dies mit SMTP nur noch über SSL Verschlüsselung. Ich habe bei Gmail so eingestellt, das POP aktiviert ist und IMAP ist auch aktiviert.
    Hier ist mein Code:

    VB.NET-Quellcode

    1. Public Class xxxform
    2. Dim smtpServer As SmtpClient = Nothing
    3. Dim mail As MailMessage = Nothing
    4. Private Shared mailSent As Boolean = False
    5. Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal Command As String, ByVal Returnstring As String, ByVal returnlength As Integer, ByVal callback As Integer) As Integer
    6. Dim returnstring As String
    7. Dim callback As Integer
    8. '
    9. '
    10. '
    11. '
    12. smtpServer = New SmtpClient()
    13. mail = New MailMessage()
    14. Dim attachment As Attachment = Nothing
    15. smtpServer.UseDefaultCredentials = False
    16. smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network
    17. smtpServer.Credentials = New Net.NetworkCredential("Email", "Passwort")
    18. smtpServer.Port = 587
    19. smtpServer.Host = "smtp.gmail.com"
    20. smtpServer.EnableSsl = True
    21. mail = New MailMessage()
    22. AddHandler smtpServer.SendCompleted, AddressOf SendCompletedCallback
    23. Dim Datei As Object = Pfad & "\" & Ordnername.Text & "\"
    24. Dim sPath As String = Datei
    25. If sPath.EndsWith("\") And sPath.Length > 3 Then
    26. sPath = sPath.Substring(0, sPath.Length - 1)
    27. End If
    28. If System.IO.Directory.Exists(sPath) Then
    29. Dim sFiles() As String = System.IO.Directory.GetFiles(sPath, "*.*")
    30. With mail
    31. .From = New MailAddress("Email")
    32. .To.Add("Email")
    33. .Subject = System.Environment.MachineName + " " + "User"
    34. .Body = "In dieser Mail befinden sich evt. Anlagen."
    35. .Priority = MailPriority.Normal
    36. Dim sFile As String
    37. For Each sFile In sFiles
    38. .Attachments.Add(New Attachment(sFile))
    39. Next
    40. End With
    41. End If
    42. smtpServer.SendAsync(mail, "")
    43. End If
    44. Private Sub SendCompletedCallback(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
    45. smtpServer.Dispose()
    46. mail.Dispose()
    47. mailSent = True
    48. End Sub
    49. End Class


    *Topic verschoben*

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

    IMAP und POP sind bei SMTP egal, die sind für den Empfang von E-Mails da.

    Hoffentlich wird immer über SSL eine E-Mail versendet.

    Hast Du mal versucht, deinen Code schrittweise zu debuggen? Ich bezweifele, dass die Senderoutine überhaut erreicht wird.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).