Announcement

Collapse
No announcement yet.

Ordner "Gesendete Objekte"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ordner "Gesendete Objekte"

    Hi,

    Ich greife aus einer VisualBasic-Applikation auf die gesendeten Mails des aktuellen Users zu:

    Code:
        Private Sub EmailAusSentSpeichern()
            Wait(5) ' Bei großen Attachments dauert's etwas länger
            Dim o As Outlook.Application = GetObject(, "Outlook.Application")
            Dim Filter As String = "[Subject]='" & SubjectWhenSent & "'"
            Dim mailfolder As Outlook.MAPIFolder = o.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail)
            Dim MItems As Object = mailfolder.Items
            Dim ret As Outlook.MailItem = MItems.Find(Filter)
            If ret Is Nothing Then
                ShowError("Die Mail konnte in Ihrem Sent-Ordner nicht gefunden werden, bitte speichern Sie die gesendete Mail selbst aus dem Sent-Ordner ins Dokumentenverzeichnis.")
            Else
                Dim mailToSave As Outlook.MailItem = ret
                While ret IsNot Nothing 'suche das neueste MailItem mit angegebenem Subject
                    Dim dummy As Object = MItems.FindNext()
                    If dummy IsNot Nothing Then
                        ret = TryCast(dummy, Outlook.MailItem)
                        If ret Is Nothing Then Exit While
                        If ret.CreationTime > mailToSave.CreationTime Then mailToSave = ret
                    End If
                    ret = dummy
                End While
    
                If DateDiff(DateInterval.Minute, mailToSave.SentOn, Now) > 4 Then
                    ShowWarning("Fehler beim Speichern der gesendeten Mail: Die neueste passende Mail ist mindestens 5 Minuten alt. " & vbCrLf & _
                                "Aus Sicherheitsgründen wird die gespeicherte ungesendete Mail nicht überschrieben, sondern die gesendete erhält den Namenszusatz '_sent'" & vbCrLf & _
                                "Bitte überprüfen Sie die entsprechenden Dateien am Speicherort und Speichern Sie ggf. selbst die Mail aus Ihrem Sent-Ordner.", "Speichern der gesendeten Mail")
                    SaveFilename = IO.Path.Combine(IO.Path.GetDirectoryName(SaveFilename), IO.Path.GetFileNameWithoutExtension(SaveFilename) & "_sent" & IO.Path.GetExtension(SaveFilename))
                End If
                Try
                    mailToSave.SaveAs(SaveFilename)
                Catch ex As Exception
                    ShowInternalError("Fehler beim Speichern der Mail. Bitte speichern Sie diese Mail direkt aus Outlook heraus.")
                End Try
            End If
        End Sub
    Nun meldet mir einer der Anwender (auch noch der, auf dessen speziellen Wunsch diese Funktion eingebaut wurde), dass die Software die gesendete Mail nicht findet. An meinem Rechner funktioniert es, daher denke ich nicht, dass es ein Problem von VB.NET ist (deshalb poste ich das jetzt auch hier), wir haben eigentlich unternehmensweit alle die gleiche Office-Installation (kleinere Variationen im Patch-Status wären zwar möglich, größere Abweichuingen sind aber unwahrscheinlich, weil die IT regelmäßig Updates für alle Rechner ausrollt), an einer grundlegend anderen Version kann es auch nicht liegen, Office Automatisierungs-Upgrade ist auch installiert, sonst könnte meine Software die Mail gar nicht erst erstellen.

    Der Ordner heisst bei ihm "Gesendete Objekte" und bei mir "SentItems", insofern besteht schon ein Unterschied zu dem System, auf dem es getestet wurde, da ich aber über GetDefaultFolder(olFolderSentMail) zugreife, sollte es keinen Unterschied machen, welche Spracheinstellung gewählt ist, oder?

    Woran könnte es liegen, also welche Unterschiede könnten sonst noch bestehen, die dieses Fehlverhalten auslösen?

    Gruß
    Martin Dietz

  • #2
    Das Problem hat sich erledigt, ich weiß nicht warum (ob es an Umlauten oder Sonderzeichen im Subject gelegen hat), jedenfalls klappt es jetzt bei den Standard-Mails ('Vorgang X erreicht Status Y') auch bei ihm, und die paar bei denen es nicht klappt, sollen die Anwender dann halt selbst suchen.

    Die Frage kann geschlossen werden.

    Gruß
    Martin Dietz

    Comment

    Working...
    X