Hilfe!! Script erstellen, das 2 Dateien prüfen soll und dann als email zb. mit blat versenden.
Hallo!
Ich habe ein Problem, das mein ein Vorgänger von mir für eine Fax Lösung (GFI Fax) ein Programm geschrieben hat und dieses nur im kompilierten Status aufzufinden ist und nicht nicht mehr funktioniert.
Nun im Prinzip soll das Programm oder meinetwegen auch Script prüfen ob in einem Verzeichnis 2 Dateien (Pdf und txt) vorhanden sind. (PDF = Fax das als Anhang per Email versendet werden soll; TXT= Absender, Faxnummer u. Auftragsnummer) wenn beide vorhanden, dann kopiere in ein "out" Verzeichnis und danach versende die pdf per mail.
Ich bin kein Programmierer, sondern kümmere mich ausschließlich um Virtualisierungen etc. nun da ich nicht weiß in welcher Sprache er das Programm geschrieben hat und auch leider nirgendwo Projektdateien hinterlassen hat muss ich mir was einfallen lassen.
Wäre echt froh wenn mir jemand dabei helfen kann.
Mfg
Ich habe ein Problem, das mein ein Vorgänger von mir für eine Fax Lösung (GFI Fax) ein Programm geschrieben hat und dieses nur im kompilierten Status aufzufinden ist und nicht nicht mehr funktioniert.
Nun im Prinzip soll das Programm oder meinetwegen auch Script prüfen ob in einem Verzeichnis 2 Dateien (Pdf und txt) vorhanden sind. (PDF = Fax das als Anhang per Email versendet werden soll; TXT= Absender, Faxnummer u. Auftragsnummer) wenn beide vorhanden, dann kopiere in ein "out" Verzeichnis und danach versende die pdf per mail.
Ich bin kein Programmierer, sondern kümmere mich ausschließlich um Virtualisierungen etc. nun da ich nicht weiß in welcher Sprache er das Programm geschrieben hat und auch leider nirgendwo Projektdateien hinterlassen hat muss ich mir was einfallen lassen.
Wäre echt froh wenn mir jemand dabei helfen kann.
Mfg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 224857
Url: https://administrator.de/contentid/224857
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
10 Kommentare
Neuester Kommentar
im einfachsten fall kann man das schon per batch script machen.
soooo ungefähr kann man das sicherlich lösen.
wenn ich zeit finde mach ich das heute abend. schreib mir, falls du keine andere lösung gefunden hast.
grüße chris
:nachoben
if exist c:\inputornder\*.pdf {
dann hier die txt auslesen. das geht am besten per findstr. den wert auslesen und in eine variable speichern
dann blat aufrufen und die variable irgendwo dem programm übergeben (muss ich mir genauer anschauen)
sprung wieder nach oben
goto nachoben
}
und um das in einer schleife auszuführen und möglichst einfach zu halten (das ist die ultra-billig-variante) in den else zweig ein:
else {
goto nachoben
}
soooo ungefähr kann man das sicherlich lösen.
wenn ich zeit finde mach ich das heute abend. schreib mir, falls du keine andere lösung gefunden hast.
grüße chris
hier der ca. codeteil:
:run
set TXT_INHALT = ""
IF EXIST "c:\Ordner\*.pdf" && IF EXIST "c:\Ordner\*.txt"
{
set /p TXT_INHALT=<c:\name der txt.txt
rem hier kommt jetzt der blat code und als platzhalter der email adresse kommt der inhalt von TXT_inhalt rein.
rem zurück zum anfang
goto run
}
ELSE
{
rem zurück zum Anfang
goto run
}
Hallo askando,
wenn es ein AutoIT Script sein darf, das den Ordner selbständig in einem änderbaren Intervall überprüft, inklusive integriertem Mailversand ohne externe Tools(via CDO):
Es muss nur einmal gestartet werden, und läuft dann permanent im Hintergrund.
Die Variablen die angepasst werden müssen, findest du im Kopft des Scripts.
Viel Spaß
Grüße Uwe
wenn es ein AutoIT Script sein darf, das den Ordner selbständig in einem änderbaren Intervall überprüft, inklusive integriertem Mailversand ohne externe Tools(via CDO):
Es muss nur einmal gestartet werden, und läuft dann permanent im Hintergrund.
Die Variablen die angepasst werden müssen, findest du im Kopft des Scripts.
- Zeile 4 = Pfad in dem die PDF-Dateien eingehen
- Zeile 5 = Pfad in den die PDF-Dateien verschoben werden
- Zeile 7 = Intervall (Sekunden) in dem der Ordner auf neue Faxe überprüft werden soll
- ab Zeile 9 die Daten für deinen Mailserver und die Mailadressen
#NoTrayIcon
#Include <file.au3>
; Variablen ------------------
global $CHECKDIR = "C:\Temp\source"
global $OUTDIR = "C:\Temp\target"
; Intervall in dem der Ordner überprüft werden soll (Sekunden)
Const $CHECKINTERVALL = 5
; Mail Daten
Global $FROMEMAIL = ""
Global $TOEMAIL = ""
Const $FROMNAME = "Dein Name"
Const $MAILSERVER = "SMTP.SERVER.DE"
Const $SMTPUSER = "SMTPUSERNAME"
Const $SMTPPASS = "SMTPPASSWORD"
Const $SMTPPORT = "25"
Const $SMTPUSESSL = 1
;-----------------------------
While 1
$search = FileFindFirstFile($CHECKDIR & "\*.pdf")
if $search <> -1 then
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
local $szDrive, $szDir, $szFName, $szExt
_PathSplit($file, $szDrive, $szDir, $szFName, $szExt)
$pdfFile = $CHECKDIR & "\" & $file
$txtFile = $CHECKDIR & "\" & $szFName & ".txt"
if FileExists($txtFile) then
$f = FileOpen($txtFile)
$line1 = FileReadLine($f,1)
$line2 = FileReadLine($f,2)
FileClose($f)
$text_faxnummer = StringRegExp($line1,",\s*([^\r\n]+)",3)
$ret1 = @error
$text_email = StringRegExp($line2,"fr=([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6})",3)
$ret2 = @error
if $ret1 = 0 and $ret2 = 0 then
$FROMEMAIL = StringReplace($text_email," ","")
$TOEMAIL = StringReplace($text_faxnummer," ","") & "@faxmaker.com"
_INetSmtpMailCom($MAILSERVER,$FROMNAME,$FROMEMAIL,$TOEMAIL,"Neues Fax","Im Anhang finden sie das Fax als PDF",$pdfFile,"","","Normal",$SMTPUSER,$SMTPPASS,$SMTPPORT,$SMTPUSESSL)
FileMove($pdfFile,$OUTDIR & "\",9)
FileMove($txtFile,$OUTDIR & "\",9)
Endif
Endif
WEnd
EndIf
FileClose($search)
Sleep($CHECKINTERVALL * 1000)
WEnd
; Variables for Function _INetSmtpMailCom
;##################################
;~ $SmtpServer = "" ; address for the smtp-server to use - REQUIRED
;~ $FromName = "User" ; name from who the email was sent
;~ $FromAddress = "" ; address from where the mail should come
;~ $ToAddress = "" ; destination address of the email - REQUIRED
;~ $Subject = "testsubject" ; subject from the email - can be anything you want it to be
;~ $Body = "This Is The Body" ; the messagebody from the mail - can be left blank but then you get a blank mail
;~ $AttachFiles = "" ; the file you want to attach- leave blank if not needed
;~ $CcAddress = "" ; address for cc - leave blank if not needed
;~ $BccAddress = "" ; address for bcc - leave blank if not needed
;~ $Importance = "Normal" ; Send message priority: "High", "Normal", "Low"
;~ $Username = "" ; username for the account used from where the mail gets sent - REQUIRED
;~ $Password = "" ; password for the account used from where the mail gets sent - REQUIRED
;~ $IPPort = 25 ; port used for sending the mail
;~ $ssl=0 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS
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)
Local $objEmail = ObjCreate("CDO.Message")
$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
$objEmail.To = $s_ToAddress
Local $i_Error = 0
Local $i_Error_desciption = ""
If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
$objEmail.Subject = $s_Subject
If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
$objEmail.HTMLBody = $as_Body
Else
$objEmail.Textbody = $as_Body & @CRLF
EndIf
If $s_AttachFiles <> "" Then
Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
For $x = 1 To $S_Files2Attach
$S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
If FileExists($S_Files2Attach[$x]) Then
$objEmail.AddAttachment ($S_Files2Attach[$x])
Else
ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
SetError(1)
Return 0
EndIf
Next
EndIf
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
If Number($IPPort) = 0 then $IPPort = 25
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
;Authenticated SMTP
If $s_Username <> "" Then
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
EndIf
If $ssl Then
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
EndIf
;Update settings
$objEmail.Configuration.Fields.Update
; Set Email Importance
Switch $s_Importance
Case "High"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
Case "Normal"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
Case "Low"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
EndSwitch
$objEmail.Fields.Update
; Sent the Message
$objEmail.Send
If @error Then
SetError(2)
EndIf
$objEmail=""
EndFunc ;==>_INetSmtpMailCom
Grüße Uwe
Zitat von @askando:
@ Uwe
Vielen Dank! In der Zeile 9 wird quasi eine konstante Emailadresse zum versenden via smtp angegeben. Jedoch müsste ich genau
an der Stelle einen Wert aus der zugehörigen txt. auslesen. Ebenso in der Zeile 10, dort müsste quasi die Faxnummer
ausgelesen werden und @faxmaker.com dahinter hinzugefügt werden.
ist das der korrekt formatierte Inhalt deiner Textdatei?@ Uwe
Vielen Dank! In der Zeile 9 wird quasi eine konstante Emailadresse zum versenden via smtp angegeben. Jedoch müsste ich genau
an der Stelle einen Wert aus der zugehörigen txt. auslesen. Ebenso in der Zeile 10, dort müsste quasi die Faxnummer
ausgelesen werden und @faxmaker.com dahinter hinzugefügt werden.
::Name Empfänger, Faxnummer
::A=Name der PDF (Anhang), fr=Absender Emailadresse
OK ist oben im Script angepasst...