Hallo,
ich habe folgendes Ziel: ich erstelle mit Outlook 2010 ein Mail, versende es und möchte das versendete Element dann aus meinen Gesendeten Elementen in einen anderen Ordner verschieben. Mein Problem ist, dass das gesendete Mail nicht sofort nach dem Senden-Befehl auffindbar ist, auch nicht, wenn ich die Ausführung nach dem Senden pausiere. Kurioserweise reicht aber jede Benutzer-Interaktion zum fehlerfreien Durchlauf (MsgBox, Haltepunkt, ...)
Ich filtere die Outbox eindfach nach dem Betreff, wenn ich die MsgBox im auskommentiere, wird das Mail nicht gefunden, mit Unterbrechung durch MsgBox geht es (dann brauche ich auch die while-Schleife nicht, die eigentlich überflüssig ist, weil sie andernfalls auch nichts hilft)
Gibt es da eine elegantere Lösung? Vielleicht so etwas wie "Refresh"? Application.GetNamespace("MAPI").SyncObjects(1).Start nützt nichts.
Danke für eure Hilfe,
Markus
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | Declare Sub Sleep Lib "kernel32" ( ByVal dwMilliseconds As Long )
Sub SendAndMove()
Dim j As Long
Dim fldSrc As MAPIFolder, _
fldTgt As MAPIFolder
Dim ml As Object
Dim mlSent As Object
Dim subj As String
Set fldSrc = Application.GetNamespace( "MAPI" ).GetDefaultFolder(olFolderSentMail)
Set fldTgt = Application.GetNamespace( "MAPI" ).Folders( "Archiv" )
Set ml = Application.CreateItem(olMailItem)
subj = "MeinBetreff"
With ml
. To = "adresse@test.com"
.subject = subj
.Body = "Mailtext"
.Send
End With
MsgBox Prompt:= "Gesendet: " & ml.subj & " an " & ml. To
Set mlSent = fldSent.Items.Restrict( "[Subject] = " "" & subj & "" "" )
j = 0
While (mlSent.Count = 0) And (j < 100)
Sleep 10
Set mlSent = fldSent.Items.Restrict( "[Subject] = " "" & subj & "" "" )
j = j + 1
Wend
For Each ml In mlSent
ml.Move fldTgt
Next ml
End Sub
|
|