Hallo Entwickler-Kollegen,
hätte hier eine Outlook-Frage:
Folgende Funktion soll im Outlook im 'Posteingang' die E-Mail scannen und überprüfen, ob sich Anhänge an den E-Mails befinden. Je nach Anzahl der der gefunden Anhänge sollen diese kopiert und in einem Ablageordner gespeichert werden.
In diesem Fall unter: K:\CRS\ZFM\AutoIt\Programme\peppi\Attachments
In dem Ordner: 123
Die Funktion läuft zwar gut und schnell, jedoch gibt es das Problem, dass häufig die PDF-Dokumente unvollständig gespeichert werden. Dies lassen sich dann nicht mehr öffnen, obwohl es beim händischen speichern normal funktioniert. Andere Adobe-Dokumente, Bilder und Dokumente lassen sich wiederum problemlos öffnen.
Ich vermute, dass es hier weniger ein Geschwindigkeitsproblem, sondern eher ein Problem ist, mit welcher Version die PDF-Dokumente generiert wurden (von neueren oder älteren Versionen).
Kennt jemand die Problematik bzw. hat jemand eine Idee, wie man zuverlässig alle PDF-Dokumente abspeichern kann?
Hier ist meine Funktion:
Spoiler anzeigen
$oOutlook = _m_outlook_creat_get_Object() ; übergibt Objekt in Variable $oOutlook
$Anhangfolder = 'K:\CRS\ZFM\AutoIt\Programme\peppi\Attachments\' ; speicherort der Anhänge
$Item_ID = 123
Global $aOL_Item = _OL_ItemFind($oOutlook, $Mail_Absender, $olMail, "", "", "", "EntryID"); übergibt alle Email-IDs
If $aOL_Item[0][0] = 0 Then Exit MsgBox(16, "OutlookEX UDF: _OL_ItemAttachmentGet Example Script", "Es konnten keine Emails inm Ordner 'Drittanbieter\Posteingang' gefunden werden. @error = " & @error)
Local $BeginnNo = 1, $ActualNo = $aOL_Item[0][0], $AnhangNo = ''
While 1
$Result = _OL_ItemAttachmentGet($oOutlook, $aOL_Item[$ActualNo][0], Default)
If IsArray($Result) Then
$AnhangNo = $Result[0][0]
for $i = 0 to $AnhangNo
_OL_ItemAttachmentSave($oOutlook, $aOL_Item[$ActualNo][0], Default, 1, $Anhangfolder&$Item_ID&'\'&$Result[$AnhangNo][1])
$AnhangNo -=1
IF @error <> 0 Then MsgBox(0, 'Result','Achtung Speicherfehler. @error =' & @error & ", @extended = " & @extended)
next
EndIf
$AnhangNo = ''
$BeginnNo += 1
$ActualNo -= 1
If $ActualNo = 0 Then Exit
Wend
_OL_Close($oOutlook)
func _m_outlook_creat_get_Object($action = 'get')
[/autoit] [autoit][/autoit] [autoit]Local Static $outlook_Object
[/autoit] [autoit][/autoit] [autoit]Switch $action
Case 'get'
if IsObj($outlook_Object) then
return $outlook_Object
Else
ContinueCase
endif
Case 'create'
$outlook_Object = _OL_Open()
return $outlook_Object
case 'close'
_OL_Close($outlook_Object)
$outlook_Object = 0
EndSwitch
endfunc ;<==/m_outlook_creat_get_Object
Vorab besten Dank für Eure Ideen
Crack