Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Neue Datei auf FTP-Server erkennen und per Email (als Anhang) versenden an feste Emailadresse (Blat, AutoIT, WatchFTP ?)

Mitglied: TSohnges

TSohnges (Level 1) - Jetzt verbinden

18.02.2015, aktualisiert 21.02.2015, 1284 Aufrufe, 1 Kommentar, 1 Danke

Hallo,

ich bräuchte ein bißchen Hilfe bei der Umsetzung folgender Aufgabe und würde mich über Denkanstöße oder Hilfe sehr freuen:

Auf einem Windows-PC soll - alle 15min wiederkehrend im Hintergrund - folgendes Skript ablaufen:
1) Ein bestimmtes (externes) FTP-Verzeichnis soll regelmäßig z.B. alle 15min per FTP auf neue Dateien überprüft werden. Nur neue Dateien, keine neuen Ordner... Dateityp egal...
2) Falls neue Dateien (Typ, Größe egal) vorhanden sind, sollen diese per FTP runtergeladen werden in einen lokalen Ordner auf dem Windows-PC und dann
3) als Emailanhang verschickt werden, jede Datei einzeln, mit einem mehrzeiligen Standardtext ("Sehr geeehrte... anbei erhalten Sie... mit freundlichen Grüßen"), Betreff jeweils mit dem variablen Dateinamen "Anbei DATEINAME zur Information". To: und CC: wären immer gleich. Versand erfolgt über SMTP-Server vom Provider (auth). Keinr Verbindung zu Outlook o.ä. nötig und auch nicht gewünscht.
4) Anschließend soll die Datei in einen Ordner verschoben werden "verschickte Dateien" o.ä.

Ich dachte an BLAT oder ggf. auch AutoIT.

Hab mich auch schon eingelesen in die beiden Threads hier:
https://www.administrator.de/forum/pdf-dateien-verzeichnis-automatisch-e ... und
https://www.administrator.de/forum/hilfe-script-erstellen-das-2-dateien- ...
habe mich bisher für die BLAT-Variante entschieden, ich denke das reicht und sollte funktionieren, aber leider bin ich bei den Skriptkenntnissen nicht so auf der Höhe.

Habe mir auch WatchFTP http://www.watchftp.de/ angesehen, aber ich möchte nicht nur eine Email bekommen, DASS sich etwas auf dem FTP-Server geändert hat, sondern genau diese Datei gleich an die Email anhängen. Soweit ich das erkennen konnte, wird dies von WatchFTP nicht unterstützt. Schlanker und mir lieber wäre eigentlich auch BLAT, denke ich.

Vielen Dank vorab
Andere Vorschläge (freeware, shareware oder dergl. die das kann auch gerne willkommen)

Tilo
Mitglied: 114757
LÖSUNG 21.02.2015, aktualisiert um 17:50 Uhr
Moin Moin,
AutoIT All-In-One ohne externe Tools, das ganze alle 15 Minuten in den Taskplaner, feddich.
Viel Erfolg...
01.
#NoTrayicon 
02.
; Includes ----- 
03.
#include <FTPEx.au3> 
04.
#include <Array.au3> 
05.
#Include <file.au3> 
06.
#Include <WinAPI.au3> 
07.
; ---- FTP Settings ---- 
08.
Const $SERVER = "ftp.domain.de" 
09.
Const $USERNAME = "USERNAME" 
10.
Const $PASSWORD = "PASSWORD" 
11.
Const $FTPDIR = "/data/ordner" 
12.
; --------- 
13.
; ---- MAIL-SETTINGS ----- 
14.
Const $FROMEMAIL = "from@domain.de" 
15.
Const $TOEMAIL = "to@domain.de" 
16.
Const $CCEMAIL = "cc@domain.de" 
17.
Const $FROMNAME = "ABSENDERNAME" 
18.
Const $MAILSERVER = "smtp.domain.de" 
19.
Const $SMTPUSER = "user@domain.de" 
20.
Const $SMTPPASS = "PASSWORD" 
21.
Const $SMTPPORT = "25" 
22.
Const $SMTPUSESSL = 1 
23.
; ----------------- 
24.
Global $downloadDir = @TempDir 
25.
Global $archiveDir = @ScriptDir & "\archive" 
26.
Global $syncFile = @ScriptDir & "\files.txt" 
27.
Global $newFiles[1] 
28.
;---------------- 
29.
; Archivverzeichnis erstellen wenn es nicht existiert 
30.
if not FileExists($archiveDir) then DirCreate($archiveDir) 
31.
$ftp = _FTP_Open("myagent") 
32.
; Verbinde mit FTP-Server 
33.
$conn = _FTP_Connect($ftp,$SERVER,$USERNAME,$PASSWORD) 
34.
if $conn = 0 then 
35.
	msgbox(48,"Verbindungs-Fehler","Die Verbindung zum FTP-Server konnte nicht hergestellt werden",2) 
36.
	_FTP_Close($ftp) 
37.
	exit 1 
38.
EndIf 
39.
; navigiere in FTP Ordner 
40.
if _FTP_DirSetCurrent($conn,$FTPDIR) = 0 then 
41.
	msgbox(48,"Verzeichnisfehler","In das FTP-Verzeichnis konnte nicht gewechselt werden!",2) 
42.
	_FTP_Close($ftp) 
43.
	exit 1 
44.
endif 
45.
; hole Liste aller aktuellen Dateien im Verzeichnis 
46.
$arrCurrentFiles = _Ftp_ListToArray($conn,2) 
47.
; Vergleiche Dateiliste wenn vorhanden 
48.
if FileExists($syncFile) then 
49.
	$fOpen = FileOpen($syncFile) 
50.
	$arrLastFiles = StringSplit(FileReadLine($fOpen,1),"|") 
51.
	FileClose($fOpen) 
52.
	for $i = 1 to $arrCurrentFiles[0] 
53.
		if _ArraySearch($arrLastFiles,BinaryToString($arrCurrentFiles[$i],4)) = -1 then 
54.
			_ArrayAdd($newFiles,$arrCurrentFiles[$i]) 
55.
		Endif 
56.
	Next 
57.
Else 
58.
	; Speichere initial alle aktuellen Dateinamen im FTP-Verzeichnis 
59.
	$strFiles = BinaryToString(_ArrayToString($arrCurrentFiles,"|",1),4) 
60.
	$fSave = FileOpen($syncFile,138) 
61.
	FileWrite($fSave,$strFiles) 
62.
	FileClose($fSave) 
63.
	msgbox(64,"Erstsynchronisierung erfolgt", "Die Dateiliste wurde erstmalig erstellt, nachfolgend hinzukommende Dateien werden bei erneutem Aufruf versendet",4) 
64.
Else 
65.
EndIf 
66.
; Alle neuen Dateien lokal speichern, per Mail verschicken und Archivieren 
67.
if UBound($newFiles) > 1 then 
68.
	local $sentFiles 
69.
	for $i = 1 to UBound($newFiles)-1 
70.
		;Download File 
71.
		$UTF8Name = BinaryToString($newFiles[$i],4) 
72.
		if _FTP_FileGet($conn,$newFiles[$i],$downloadDir & "\" & $UTF8Name ) = 1 then 
73.
			;Send Mail with Attachment 
74.
			local $mBody = "Sehr geehrte Damen und Herren," & @CRLF & "anbei erhalten sie eine neue Datei." & @CRLF & "Mit freundlichen Grüßen" & @CRLF & "Ihre Firma XYZ" 
75.
			local $mSubject = "Anbei " & $UTF8Name & " zur Information." 
76.
			_INetSmtpMailCom($MAILSERVER,$FROMNAME,$FROMEMAIL,$TOEMAIL,$mSubject,$mBody,$downloadDir & "\" & $UTF8Name,$CCEMAIL,"","Normal",$SMTPUSER,$SMTPPASS,$SMTPPORT,$SMTPUSESSL) 
77.
			; Wenn Datei erfolgreich veschickt wurde => Datei archivieren 
78.
			if not @error then 
79.
				FileMove($downloadDir & "\" & $UTF8Name,$archiveDir,1) 
80.
				$sentfiles = $sentFiles & "|" & $UTF8Name 
81.
			endif 
82.
		Endif 
83.
	Next 
84.
	$fSave = FileOpen($syncFile,129) 
85.
	FileWrite($fSave,$sentFiles) 
86.
	FileClose($fSave) 
87.
	msgbox(64,"Erfolg", "Folgende Dateien wurden erfolgreich versendet: " & @CRLF & @CRLF & $sentFiles,2) 
88.
Else 
89.
	msgbox(64,"Keine neuen Dateien","Es wurden keine neuen Dateien gefunden!",1) 
90.
Endif 
91.
 
92.
;Trenne FTP Verbindung 
93.
_FTP_Close($ftp) 
94.
Exit 0 
95.
 
96.
 
97.
; Functions ------------------------------ 
98.
 
99.
; Variables for Function _INetSmtpMailCom 
100.
;################################## 
101.
;~ $SmtpServer = ""                            ; address for the smtp-server to use - REQUIRED 
102.
;~ $FromName = "User"                          ; name from who the email was sent 
103.
;~ $FromAddress = ""                           ; address from where the mail should come 
104.
;~ $ToAddress = ""                             ; destination address of the email - REQUIRED 
105.
;~ $Subject = "testsubject"                       ; subject from the email - can be anything you want it to be 
106.
;~ $Body = "This Is The Body"                  ; the messagebody from the mail - can be left blank but then you get a blank mail 
107.
;~ $AttachFiles = ""                           ; the file you want to attach- leave blank if not needed 
108.
;~ $CcAddress = ""                             ; address for cc - leave blank if not needed 
109.
;~ $BccAddress = ""                            ; address for bcc - leave blank if not needed 
110.
;~ $Importance = "Normal"                      ; Send message priority: "High", "Normal", "Low" 
111.
;~ $Username = ""                              ; username for the account used from where the mail gets sent - REQUIRED 
112.
;~ $Password = ""                              ; password for the account used from where the mail gets sent - REQUIRED 
113.
;~ $IPPort = 25                               ; port used for sending the mail 
114.
 
115.
;~ $ssl=0                                   ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS 
116.
 
117.
 
118.
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0) 
119.
    Local $objEmail = ObjCreate("CDO.Message") 
120.
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>' 
121.
    $objEmail.To = $s_ToAddress 
122.
    Local $i_Error = 0 
123.
    Local $i_Error_desciption = "" 
124.
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress 
125.
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress 
126.
    $objEmail.Subject = $s_Subject 
127.
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then 
128.
        $objEmail.HTMLBody = $as_Body 
129.
    Else 
130.
        $objEmail.Textbody = $as_Body & @CRLF 
131.
    EndIf 
132.
    If $s_AttachFiles <> "" Then 
133.
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";") 
134.
        For $x = 1 To $S_Files2Attach[0] 
135.
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x]) 
136.
            If FileExists($S_Files2Attach[$x]) Then 
137.
                $objEmail.AddAttachment ($S_Files2Attach[$x]) 
138.
            Else 
139.
                ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF) 
140.
                SetError(1) 
141.
                Return 0 
142.
            EndIf 
143.
        Next 
144.
    EndIf 
145.
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
146.
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer 
147.
    If Number($IPPort) = 0 then $IPPort = 25 
148.
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort 
149.
    ;Authenticated SMTP 
150.
    If $s_Username <> "" Then 
151.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
152.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username 
153.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password 
154.
    EndIf 
155.
    If $ssl Then 
156.
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True 
157.
    EndIf 
158.
    ;Update settings 
159.
    $objEmail.Configuration.Fields.Update 
160.
    ; Set Email Importance 
161.
    Switch $s_Importance 
162.
        Case "High" 
163.
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High" 
164.
        Case "Normal" 
165.
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal" 
166.
        Case "Low" 
167.
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low" 
168.
    EndSwitch 
169.
    $objEmail.Fields.Update 
170.
    ; Sent the Message 
171.
    $objEmail.Send 
172.
    If @error Then 
173.
        SetError(2) 
174.
    EndIf 
175.
    $objEmail="" 
176.
EndFunc   ;==>_INetSmtpMailCom
Gruß jodel32
Bitte warten ..
Ähnliche Inhalte
Entwicklung
Autoit Script datei als Email anhang
gelöst Frage von bfbertiEntwicklung5 Kommentare

Hallo. Ich habe folgendes Problem: Der Drucker bei uns auf arbeit das FAX TO MAIL wegen der SSL verschlüsselung ...

Batch & Shell
Neue Dateien an BLAT übergeben
gelöst Frage von xgUixBatch & Shell13 Kommentare

Hallo Leute, ich habe einen Ordner mit diversen PDF Datein. Jeden Ersten im Monat kommen neue Dateien hinzu. Diese ...

Entwicklung
Vbs - Email versenden mit pdf-Anhang?
gelöst Frage von BenJo64Entwicklung2 Kommentare

Hallo, ich verzweifele gerade an folgendem Problem: Ich versuche von einem Microsoft Windows Server 2003 aus eine pdf als ...

Batch & Shell

SSL verschluesselte Emails versenden mittels blat und stunnel

gelöst Frage von liverpool87Batch & Shell3 Kommentare

Hallo Leute, ich hab aus mehreren Foren Infos gesammelt und dann auf folgenden stunnel.conf und batch script gekommen. Es ...

Neue Wissensbeiträge
Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 14 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 21 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 1 TagiOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 2 TagenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Windows Server
Alten DC entfernen
Frage von smartinoWindows Server24 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...