dani
Goto Top

Outlook - VBA - Eine Nachricht kopieren

Hi Jungs und natürlich auch Mädels,
ich stehe vor einem Problem, wo ich eure Hilfe wieder brauche.

Ich habe hier eine Windows 2003 Domäne + Exchange 2003. Der Benutzer um den es geht, hat ein Eigenes Postfach. Zusätzlich nochmal ein Exchangepostfach (Wir sagen Funktionspostfach). Darüber kann der Benutzer Mails lesen und antworten. Das funktioniert soweit auch sehr gut.

Leider landen alle Mails, die er über das Funktionspostfach sendet, in seinem Ordner "Gesendete Objekte" und nicht im Ordner "Gesendete Objekte" im Funktionspostfach.
Gibts dafür eine Lösung? Egal ob Regel, Tool, VBA, etc...


Viele Grüße,
Dani

Content-ID: 102754

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

Ausgedruckt am: 19.11.2024 um 05:11 Uhr

Dani
Dani 26.11.2008 um 21:19:05 Uhr
Goto Top
So, ein bisschen habe ich nun selber schon hinbekommen. Ich gehe den Weg per VBA:
Public Sub test()
    Dim Mails As Outlook.Items
    Dim Mail As Object
    
    
    'Outlook als Object erstellen  
    Set myOlApp = CreateObject("Outlook.Application")  
    Set myNameSpace = myOlApp.GetNamespace("MAPI")  
   
    Set FolderUserInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
    Set FolderUserDir = FolderUserInbox.Parent.Folders("Gesendete Objekte")  
    
    
    Set FolderFuncInbox = myOlApp.Session.Folders("Postfach - Administrator")  
    Set FolderFuncDir = FolderFuncInbox.Folders("Gesendete Objekte")  
    
    
    Set Mails = FolderUserDir.Items
    .....    
End Sub
Was mir nun noch fehlt, ist der Filter. Und zwar kann ich eigentlich nur auf die Absenderadresse filtern. Außerdem braucht er nie mehr als die neusten 5 Mails im "Gesendete Objekte" - Verzeichnis durschauen und ggf. verschieben.


Grüsse,
Dani
bastla
bastla 26.11.2008 um 21:31:16 Uhr
Goto Top
Hallo Dani!

Sollte etwas in der Art sein (Du weißt ja: "Outlook - ich nix zuständig!" face-wink):
For Each M In Mails
    If UCASE(M.SenderName) = UCASE("AbsenderFuncMailBoxName") Then  
        M.Move FolderUserDir ' ZielOrdner ?  
    End If
Next
Grüße
bastla
Dani
Dani 26.11.2008 um 22:01:35 Uhr
Goto Top
Ich weiß...aber man lernt nie aus. face-wink
Soweit sieht es nicht schlecht aus. Ein Problemchen gibt es noch.

Und zwar ich müsste den String aus der Spalte "An" haben. Weil SenderName ist doch leer?!

Grüsse,
Dani
bastla
bastla 26.11.2008 um 22:11:45 Uhr
Goto Top
Hallo Dani!
Weil SenderName ist doch leer?!
Ich glaube alles ... face-wink

Dann musst Du wohl die "Recipients"-Collection durchackern, etwa:
For Each M In Mails
    For Each R In M.Recipients
        If UCase(R.Address) = UCase("AbsenderFuncMailBoxName") Then  
            M.Move FolderUserDir
            Exit For
        End If
    Next
Next
Grüße
bastla
Dani
Dani 26.11.2008 um 22:15:43 Uhr
Goto Top
Sry, das Feld heißt nicht "An" sondern "Von".
bastla
bastla 26.11.2008 um 22:19:57 Uhr
Goto Top
Wenn's nicht ".SenderName" ist, dann vielleicht ".SentOnBehalfOfName" ...

Grüße
bastla
Dani
Dani 26.11.2008 um 22:40:12 Uhr
Goto Top
Hi bastla,
das ist wohl eine Sackgasse. Ich habe das entsprechende Schlüsselwort "SenderEmailAddress" gefunden. Leider ist dieses leer, sobald ich über das Funktionspostfach sende.

ICh verfolge gerade einen anderen Ansatz. Und zwar diesen:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
   ....
End Sub
D.h. würde heißen, dass beim Senden etwas passieren kann. Wäre es möglich, eine Kopie beim Senden zu erzeugen und diese im Verzeichnis "X" abzulegen?


Gruss,
Dani
bastla
bastla 26.11.2008 um 22:45:27 Uhr
Goto Top
Hallo Dani!

Sieh Dir einmal Gesendete Objekte in andere Outlook Ordner verschieben an ...

Grüße
bastla
Dani
Dani 26.11.2008 um 22:50:34 Uhr
Goto Top
Hi,
das kenne ich schon...leider funktioniert das nur bei POP/IMAP Konten. Wenn allerdings ein Exchangekonto in ein anderes eingehängt wird, kann dieses nicht ausgewählt werden.


Gruss,
Dani
bastla
bastla 26.11.2008 um 23:05:55 Uhr
Goto Top
Hallo Dani!

Wenn es keinen Anhaltspunkt für eine gesendete Mail gibt, dürfte es auch beim Senden schwierig sein, eine Unterscheidung zu treffen - ist allerdings nur eine Annahme; gefunden habe ich zwischenzeitlich leider nichts mehr, sorry ...

Grüße
bastla
Dani
Dani 30.11.2008 um 21:01:35 Uhr
Goto Top
Hmm...ich bin im Moment auch ratlos...mir fällt gerade auch keinen Punkt ein, wo man vergleichen könnte.


Gruss,
Dani
dieablo
dieablo 15.03.2009 um 14:19:31 Uhr
Goto Top
Hallo,

ich habe das gleiche Problem und auch eine Idee wie man es lösen könnte.
Weiß bloß nicht wie man am besten ran geht.
Da man, wie schon festgestellt wurde "SenderEmailAddress" nicht verwenden kann, könnte man doch einfach die Emails die im Ordner "Gesendete Objekte" kontrollieren und wenn in der Mail der Abesender "x" ist dann verschieben.
Fragt mich aber bitte nicht wie, ich suche gerade ob ich irgendwo dazu was finde.

Lg
Dieablo
dieablo
dieablo 17.03.2009 um 19:48:02 Uhr
Goto Top
Hallo, kann jemand helfen ??
Ich glaube ich habe es...
Mir fehlt nur der letzte Schritt
Sub test()

 Dim App As Outlook.Application
 Dim namespace As Outlook.namespace
 Dim ich As Outlook.MAPIFolder
 Dim test As Outlook.MAPIFolder
             
 Set App = CreateObject("Outlook.Application")  
 Set namespace = App.GetNamespace("MAPI")  
      
 Set ich = App.Session.Folders("Postfach - klar").Folders(4)  
 Set test= App.Session.Folders("Postfach - Test Test").Folders(4)  
   
' If ich.GetExplorer.Selection.Item(1).SentOnBehalfOfName = "test" Then  
müsste hier irgendwie stehen

move to test aber wie ??
 'End If  
  
End Sub
Danke

Lg
Dieablo