In einer Schleife den Ordnerinhalt durchgehen, und je Durchlauf das machen: attachment = New Attachment(DateinameMitPfad) mail.Attachments.Add(attachment) Edit: Wie man alle Dateien eines Ordners bekommt, findest du in vielen Threads hier im Forum
Zitat von mrMo: „Wie man alle Dateien eines Ordners bekommt, findest du in vielen Threads hier im Forum“ Nutze die magische Suche hier im Forum. Dort du wirst die Antwort finden, junger Padawan
Zitat: „ timeout wegen Überlagerung “ Edit: Das gehört nicht ins Timer Tick event mach das mal lieber bei nen Button Click. Evtl. liegt es daran, das du "smtpServer.Send(mail)" zwei mal aufrufst? Mach mal den letzten aufruf weg, der macht da gar keinen Sinn. Mach mal das Try/Catch da weg und schreib, an welcher Stelle es dann knallt und welche Meldung dann kommt, wenn du das Programm startest.
Och, einfach mal auf C# klicken und eigeninitiative zeigen. Oder googlen, da gäbe es das sicher auch in vb.net Hier der vorgekaute Schnipsel Code in 2 Programmiersprachen: C#: smtpServer.Timeout = 1000000; VB.Net: smtpServer.Timeout = 1000000
Der System.IO Namespace bietet alle hierfür erforderlichen Funktionen. Hier wunderbar dokumentiert: msdn.microsoft.com/de-de/libra…cs-lang=vb#code-snippet-1
Scheinbar befindet sich die Datei noch im Zugriff (z.B. weil.sie noch nicht fertig versendet wurde). Lösche die Dateien, wenn der Versand fertig ist: msdn.microsoft.com/de-de/libra…dcompleted(v=vs.110).aspx
Zitat von vbfrage446: „Gebe mir dafür bitte ein code“ Hab keinen Code, woher soll ich den nehmen? In dem Link steht doch nen Haufen Code. Geht der nicht?
Hab das selber noch nie gemacht, aber ich täte es mal so versuchen: Du musst wohl deine Mail Asnychron senden mit smtpServer.SendAsync() Du brauchst das hier alleine stehend: VB.NET-Quellcode (14 Zeilen) Und das hier irgendwo (im Button Click z.B.) einfügen bevor du die Mail sendest: VB.NET-Quellcode (1 Zeile)
Habs mal bei mir zusammen kopiert. Ist nicht getestet oder optimiert, kommen zumindest keine Syntax Fehler. Ob die Mail raus geht und so musst du aber selbst testen. (Versteckter Text)
Versuch es doch mal so wie ich es oben vorgeschlagen habe. P.s. "Klappt nicht" ist sehr allgemein gehalten. Bitte zeige etwas mehr eigeninitiative und engagement hier beim erarbeiten einer Lösung. Immerhin nehmen sich hier Menschen extra Zeit für dich. Edit: @vbfrage446 mach mal das hier, bei mir läuft es dann durch: VB.NET-Quellcode (14 Zeilen)
Du kannst auf "mail" nicht zugreifen in der Methode "SendCompletedCallback", da du "mail" innerhalb einer Methode deklariert hast. "mail" musst du außerhalb einer Methode deklarieren. Dann geht auch der Zugriff und das Dispose() in der Methode "SendCompletedCallback". VB.NET-Quellcode (15 Zeilen)
Die grün gestrichelte Linie kommt wohl daher, das die Variablen noch nicht instanziiert sind. Haste mal das Programm gestartet und ausprobiert, trotz der grünen Linie?
@VaporiZed die Prüfung auf Nothing an dieser Stelle macht keinen Sinn. Sollte mail oder smtp nothing sein kommt der code gar nicht an diese stelle sondern raucht vorher ab @vbfrage446 jetzt mal ohne spaß, wenn es dir mangels Wissen nicht möglich ist, den hier geposteten Code sauber, an der richtigem Stelle in deinen Code einzufügen, dann vertage bitte dein Projekt und erlerne zunächst die Basics. Das Schema von @RodFromGermany ist so korrekt. Jetzt liegt es an dir dieses in deinen Code zu bekomm…
Mach das Shared weg, so das dort nur noch das steht. Private Sub SendCompletedCallback(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs) P.S. Hab ichs mir doch gedacht: Wäre schön gewesen, wenn du vorher deinen echten Code gepostet hättest. Weil da steht das shared nicht drin.
Zitat von vbfrage446: „Hätte ich es geschrieben wie es stand hätte ich die Lösung schon eher. Danke“ Diese Erkenntnis bitte beim nächsten mal beachten. Wie sollen wir dir helfen, wenn du irgend einen gekürzten Code verbreitest der nicht dem aktuellen Stand deines "echten" Codes entspricht.