SMTP Mail mit Anhang versenden

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

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von dopppartze.

    Hallo Zusammen

    MichaHo schrieb:

    das Rtf weg gemacht, den Punkt neu gesetzt und geschaut, welche Möglichkeiten dir die IDE (also IntelliSense) anbietet?

    Jein. Da muss ich allerdings zuegeben, den Code habe ich vor dieser "Erleuchtung" kopiert. Bei mir im Code steht da Dim _attachment As Attachment = New Attachment(_filePath, MediaTypeNames.Application.[b]Pdf[/b]). Das Pdf wurde mir auch vorgeschlagen, geht trotzdem nicht.

    xtts02 schrieb:

    MediaType kann man angeben, muss man aber nicht

    Ich habe es auch schon mal mit Dim _attachment As Attachment = New Attachment(_filePath) probiert. Leider auch nichts :(

    Hrüße!

    xtts02 schrieb:

    Was heisst das genau?

    Fehlermeldung bekomme ich keine. Die Mail wird auch gesendet und kommt an. Nur eben ohne Anhang.

    MichaHo schrieb:

    Ich vermute, das in _filePath nicht der Pfad zur Datei drinn steht







    Für die letze Meldung habe ich mal "_filePath" ausgeben lassen.

    Was allerdings nicht ganz passt (außer ich schmeiße was durcheinander) ist der "_attachment"


    Grüße!
    wenn man das _attachment in einer Box ausgibt, gibt er die den Namespace zurück.

    bei mir funktioniert dieser Code:

    VB.NET-Quellcode

    1. Private Sub SendMail()
    2. Dim message As New MailMessage("absender@mydomain.com", "empfänger@mydomain.com", "Betreff", "Inhalt") With {.IsBodyHtml = False}
    3. Dim smtp As New SmtpClient("HostIP", 587) With {.Credentials = New NetworkCredential("mailuser", CreateSecureString("mailpassword")), .EnableSsl = True, .UseDefaultCredentials = False}
    4. message.Attachments.Add(New Attachment(Application.StartupPath & "\Test.pdf"))
    5. Try
    6. smtp.Send(message)
    7. MessageBox.Show("EMail gesenet.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
    8. Catch ex As SmtpException
    9. MessageBox.Show(ex.Message)
    10. End Try
    11. End Sub
    12. Private Function CreateSecureString(clearText As String) As SecureString
    13. Dim secString As New SecureString()
    14. For Each c As Char In clearText
    15. secString.AppendChar(c)
    16. Next
    17. Return secString
    18. End Function
    "Hier könnte Ihre Werbung stehen..."

    MichaHo schrieb:

    wenn man das _attachment in einer Box ausgibt, gibt er die den Namespace zurück.

    Schonmal danke für die Info.

    MichaHo schrieb:

    bei mir funktioniert dieser Code:

    Ich krieg so langsam noch nen Vogel...


    Dein , .EnableSsl = True, macht doch eigentlich das gleiche wie mein mySmtpsvr.EnableSsl = True?

    Zur Info, ja der Mailserver will eine verschlüsselte Verbindung. Bei meinem Code funktioniert das Senden ohne Fehler (bis halt auf den Anhang).

    MichaHo schrieb:

    welcher port dein smtp

    In dem Code oben habe ich es geschafft die Mail zu senden

    VB.NET-Quellcode

    1. mySmtpsvr.Host = "smtp.1und1.de"
    2. mySmtpsvr.Port = 25
    3. mySmtpsvr.EnableSsl = True

    Also auch über den Port 25, Drum auch meine Frage

    HeizungAuf5 schrieb:

    Dein , .EnableSsl = True, macht doch eigentlich das gleiche wie mein mySmtpsvr.EnableSsl = True?



    edit:

    Jungs.. Ich glaube das endlos Thema ist fertig ;)

    Ich habe mir mal auf dem Code-Snippet von @xtts02 und dem was ich schon "zusammengegoogelt" habe was gebaut, was funktioniert.

    VB.NET-Quellcode

    1. Imports System.Net.Mail
    2. Imports System.Net.Mime
    3. Imports System.ComponentModel
    4. Imports System.Diagnostics
    5. Imports System.Security
    6. Imports System.Net
    7. Sub sendfax()
    8. Dim Msg As New MailMessage
    9. Dim myCredentials As New System.Net.NetworkCredential
    10. Dim _filePath As String = "C:\Test\test.pdf"
    11. Dim _attachment As Attachment = New Attachment(_filePath, MediaTypeNames.Application.Pdf)
    12. Dim message As MailMessage = New MailMessage()
    13. myCredentials.UserName = "Username.Sender"
    14. myCredentials.Password = "Passwort.Sender"
    15. Msg.IsBodyHtml = False
    16. Dim mySmtpsvr As New SmtpClient()
    17. mySmtpsvr.Host = "SMTP.Sender"
    18. mySmtpsvr.Port = 25
    19. mySmtpsvr.EnableSsl = True
    20. mySmtpsvr.UseDefaultCredentials = False
    21. mySmtpsvr.Credentials = myCredentials
    22. Try
    23. Msg.From = New MailAddress("Email.Sender")
    24. Msg.To.Add("Email.Empfänger")
    25. Msg.Subject = "Betreff"
    26. Msg.Body = "Inhalt"
    27. Msg.Attachments.Add(New Net.Mail.Attachment("C:\Test\test.pdf"))
    28. mySmtpsvr.Send(Msg)
    29. MsgBox("E-Mail gesendet.", MsgBoxStyle.Information, Title:="Information")
    30. Catch ex As Exception
    31. MsgBox(Err.Number & ex.Message & ex.StackTrace.ToString) 'Falls ein Fehler auftritt wird eine MsgBox angezeigt
    32. End Try
    33. End Sub

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „HeizungAuf5“ ()

    HeizungAuf5 schrieb:



    Zur Übersicht meine aktuelle sendfax() Sub

    VB.NET-Quellcode

    1. Sub sendfax()
    2. Dim Msg As New MailMessage
    3. Dim myCredentials As New System.Net.NetworkCredential
    4. Dim _filePath As String = "C:\Test\test.pdf"
    5. Dim _attachment As Attachment = New Attachment(_filePath, MediaTypeNames.Application.Rtf)
    6. Dim message As MailMessage = New MailMessage()
    7. myCredentials.UserName = "absender@mail.tld"
    8. myCredentials.Password = "Mail.Passwort"
    9. Msg.IsBodyHtml = False
    10. Dim mySmtpsvr As New SmtpClient()
    11. mySmtpsvr.Host = "smtp.mail.de"
    12. mySmtpsvr.Port = 25
    13. mySmtpsvr.EnableSsl = True
    14. mySmtpsvr.UseDefaultCredentials = False
    15. mySmtpsvr.Credentials = myCredentials
    16. Try
    17. Msg.From = New MailAddress("absender@mail.tld")
    18. Msg.To.Add("empfänger@mail.tld")
    19. Msg.Subject = "Betreff"
    20. Msg.Body = "Inhalt"
    21. 'Msg.Attachments.Add(("pfad"))
    22. message.Attachments.Add(_attachment)
    23. mySmtpsvr.Send(Msg)
    24. MsgBox("E-Mail gesendet.", MsgBoxStyle.Information, Title:="Information")
    25. Catch ex As Exception
    26. MsgBox(Err.Number & ex.Message & ex.StackTrace.ToString) 'Falls ein Fehler auftritt wird eine MsgBox angezeigt
    27. End Try
    28. End Sub


    Das PDF liegt auch definitiv an der Stelle ;)

    Grüße und Danke!


    Hallo,

    aber irgendwie verwurschtelst du was, wenn ich das richtig sehe.
    Du erstellst zweimal ein Variable als New MailMessage. Und nur bei der einen hängst du das Attachment an.
    Entweder du änderst diese Zeile

    Quellcode

    1. message.Attachments.Add(_attachment)
    in

    Quellcode

    1. msg.attachments.add(_attachment)
    oder alles wo du die Variable msg nutzt in die Variable message.

    Und natürlich, wie oben auch schon geschrieben, das hier

    Quellcode

    1. Dim _attachment As Attachment = New Attachment(_filePath, MediaTypeNames.Application.Rtf)
    ändern in

    Quellcode

    1. Dim _attachment As Attachment = New Attachment(_filePath, MediaTypeNames.Application)



    Edit: Da war ich wohl zu langsam mit dem Tippen :D