heros83
Goto Top

Suche ein Script das Ordner durchsucht und Dateien per E-Mail weiterschickt?

Hallo Leute,

Ich benötige ein Script mit dem ich einen Ordner nach dateien durchsuche. Und die gefundenen Dateien über Smtp per mail weiter verschickt an eine beliebige E-mail - Adresse?

ich habe eine Datei "mail.vbs erstellt:

Set fs = CreateObject("Scripting.FileSystemObject")


Sub FileSearch(pfad)

Set ordner = fs.GetFolder(pfad)

Set dateien = ordner.files

For Each datei In dateien

If LCase(fs.GetExtensionName(datei.Name)) = "tiff" Then WScript.Echo datei.Path

objMessage.Subject = "Example CDO Message"
objMessage.Sender = "yyy@yyy.de"
objMessage.To = "xxx@yyy.de"
objMessage.TextBody = "This is some sample message text."


objMessage.Send

Next

End Sub

FileSearch("C:\temp\test")

Der Ordner wird durchsucht nach einer Tiff Datei, und sendet mir eine E-mail, aber wie kann ich jetzt die gefundene Datei an die E-mail anhängen?

Vielen Dank für eure Hilfe


MFG

Heros83

Content-Key: 151095

Url: https://administrator.de/contentid/151095

Printed on: April 25, 2024 at 21:04 o'clock

Mitglied: 76109
76109 Sep 15, 2010 at 12:55:37 (UTC)
Goto Top
Hallo Heros83!

Könnte in etwa so funktioneren:
objMessage.Attachments.Add Datei.Path

Gruß Dieter
Member: Heros83
Heros83 Sep 15, 2010 at 13:22:21 (UTC)
Goto Top
Das hätte ich schon versucht, funktioniert leider nicht! Kommt immer eine fehlermeldung das dies nicht unterstüzt wird!
Mitglied: 60730
60730 Sep 15, 2010 at 15:08:47 (UTC)
Goto Top
Servus Ddidi,

Zitat von @76109:
Hallo Heros83!

Könnte in etwa so funktioneren:
objMessage.Attachments.Add Datei.Path

*grübel* nicht so?
objMessage.AddAttachment "datei.Path"

Gruß Dieter
retour
Mitglied: 76109
76109 Sep 15, 2010 at 17:46:42 (UTC)
Goto Top
Hallo Timo!

Zitat von @60730:
> Könnte in etwa so funktioneren:
objMessage.Attachments.Add Datei.Path
Die Syntax sollte in VB, VB-Net und Outlook laut Microsoft schon stimmenface-wink
*grübel* nicht so?
objMessage.AddAttachment "datei.Path"
Datei.Path in Anführungszeichen geht schon mal garnicht. Datei ist ein Object (siehe Each-Schleife) und Datei.Path liefert einen String in Anführungszeichen.

Ich denke, dieselmal liegts Du daneben *Grübel* face-smile

Gruß Dieter
Member: bastla
bastla Sep 15, 2010 at 17:51:33 (UTC)
Goto Top
Hallo Heros83!

Du willst wirklich für jede gefundene Datei eine eigene Mail verschicken? Wenn ja, könntest Du es so versuchen:
...
objMessage.TextBody = "Datei """ & datei.Path & """ gefunden."  
...
Grüße
bastla
Mitglied: 76109
76109 Sep 15, 2010 at 18:00:07 (UTC)
Goto Top
Hallo bastla!

Zitat von @bastla:
Du willst wirklich für jede gefundene Datei eine eigene Mail verschicken? Wenn ja, könntest Du es so versuchen:
...
objMessage.TextBody = "Datei """ & datei.Path & """ gefunden."  
...
Glaube nicht, das das funktioniert. TextBody kann nur Text und keine Bilder anzeigen. HTMLBody wäre eventuell eine Möglichkeitface-wink

Gruß Dieter
Member: bastla
bastla Sep 15, 2010 at 18:04:02 (UTC)
Goto Top
Hallo Dieter!

Kann natürlich nicht für den tatsächlich gewünschten Zweck funktionieren face-sad - mir war vorhin noch nicht klar, dass tatsächlich die Datei selbst verschickt werden soll ...

Grüße
bastla
Member: TsukiSan
TsukiSan Sep 16, 2010 at 03:43:42 (UTC)
Goto Top
Hallo zusammen,

ich hatte mal irgendwo dieses Beispiel gefunden:
Set oOApp = CreateObject("Outlook.Application")  
Set oOMail = oOApp.CreateItem(olMailItem)

SkriptPfad = "D:\1\2010\"  

oOMail.display ' Fenster anzeigen  
oOMail.To = "xyz@mail.de"  
oOMail.CC = "report@mail.de"  
oOMail.Subject = "Automatisierter Report"  
oOMail.Body = "Text"  
oOMail.Attachments.Add (SkriptPfad & "Report.doc")  

Set WshShell = WScript.CreateObject("WScript.Shell")  
WScript.Sleep 500
WshShell.AppActivate oOMail
WScript.Sleep 500
oOMail.display ' Fenster anzeigen  

das funktionierte zu Testzwecken bei mir. Eventuell kannst du, Heros83, da Auszüge von benutzen und dein
Script entsprechend umschreiben.

Eigentlich musst du die Pfadangabe nur in "(" Klammern setzen!

Gruss
Tsuki
Mitglied: 76109
76109 Sep 16, 2010 at 05:54:01 (UTC)
Goto Top
Hallo Tsuki!

Mir ist eingefallen, dass ich ja Outlook auf'm virtuellen PC installiert habe und selbst mal getestet. Es funktioniert sowohl mit Klammern als auch ohne Klammern, was es eigentlich auch tun sollteface-wink

Jetzt ist die Frage, ob Heros83 überhaupt Outlook verwendet oder vielleicht doch ein anderes E-Mail-Programm, dass diese Funktion tatsächlich nicht unterstützt?

Ich vermute mal letzteres, da es meines Wissens in Outlook aus Sicherheitsgründen nicht möglich ist, E-Mails vollautomatisiert zu versenden. D.h. das nach dem Send-Befehl immer nochmal eine Abfrage erscheint, ob die Mail tatsächlich versendet werden soll? face-wink

Gruß Dieter
Member: Heros83
Heros83 Sep 16, 2010 at 07:00:45 (UTC)
Goto Top
Hallo vielen Dank für eure Hilfe. ich habe jetzt eine funktionierende Lösung.

Das Script durchläuft mir den Ordner, schickt alle *.tiff Dateien weg und löscht sie anschließend:


Set fs = CreateObject("Scripting.FileSystemObject")

Sub FileSearch(pfad)

Set ordner = fs.GetFolder(pfad)

Set dateien = ordner.files


Set fso = CreateObject("Scripting.FileSystemObject")

For Each datei In dateien

Set objEmail = CreateObject("CDO.Message")
With objEmail
.From = "xx@yy.de"
.To = "yy@xx.de"
.Subject = "FAXEINGANG"
.Textbody = "NEUES FAX"
.AddAttachment datei
.Configuration.Fields.Update


If LCase(fs.GetExtensionName(datei.Name)) = "tiff" then objEmail.send

Set fso = CreateObject("Scripting.FileSystemObject")

IF LCase(fs.GetExtensionName(datei.Name)) = "tiff" then fso.GetFile(datei.path).Delete


End With

Next

End Sub

FileSearch("C:\Temp\Faxtest")
Mitglied: 76109
76109 Sep 16, 2010 at 08:12:15 (UTC)
Goto Top
Hallo Heros83!

Was ist das denn (kenn ich nicht) face-sad
Set objEmail = CreateObject("CDO.Message")

Toll! Freut mich, dass Du es bei dem ganzen Wirrwar doch hingekriegt hastface-smile

Timo kennt dieses Programm offensichtlich und hatte wieder mal Recht:'(

Gruß Dieter