İmzalı .msg dosyalarında bir Outlook tutamacı tutan dosya için OpenSharedItem yöntemi

Özgün KB numarası:   2633737

Belirtiler

Microsoft Outlook için nesne modelinde kullanılan yöntem, bir .msg dosyasının dosya tutamacı, Outlook bir süre OpenSharedItem geçene kadar serbest bırakmaz.

Neden

Bu davranış, .msg dosyası imzalanmış veya şifrelenmişse (SMIME tabanlı iletiler) ortaya çıkar. SMIME tabanlı .msg dosyalarının Outlook ve dosya tutamaçlarını şirket içinde nasıl yöneteceklerini sınırlama sınırlaması vardır. Outlook iletide imzanın arka planda doğrulanması yapar ve Outlook bir süre boşta kalma süresini geldiğinde dosya tutamacı .msg dosyasına yayımlar. .msg dosyası yalnızca Outlook işlemi tamamlandığında ve dosya tutamacı serbest bırakıldında silinebilir.

Dosya kilidinin ne zaman bırak bırakıcanı belirlemek için doğrudan bir yol bulunsa Outlook, dosyayı silme girişimini geciktirebilirsiniz.

Çözüm

Bu davranışın değişmesi plan yoktur.

Daha fazla bilgi

Office Outlook 2007 ve Outlook 2010; OpenSharedItem iCalendar (.ics) randevu dosyalarını, vCard (.vcf) dosyalarını ve ileti (.msg) dosyalarını Outlook için bir yöntem sağlar. Bu yöntem tarafından döndürülen nesnenin türü, açılan paylaşılan öğenin türüne bağlıdır.

Aşağıdaki Microsoft Visual Basic for Applications (VBA) Outlook bu örnekte, kod yöntemi kullanarak bir SignedMessage.msg dosyası OpenSharedItem açar. Daha sonra kod, posta öğesini kapatan .msg dosyasını silebilir. .msg dosyası imzalanmış veya şifrelenmişse, kod İzin Reddedildi hatasına neden olur. Bununla birlikte, imzalanmamış veya şifrelenmemiş .msg dosyası açılırsa, kod .msg dosyasını beklendiği gibi siler.

Public Sub TestOpenSharedItem()
    Dim oNamespace As Outlook.NameSpace
    Dim oSharedItem As Outlook.MailItem
    Dim oFolder As Outlook.Folder
    On Error GoTo ErrRoutine

    ' Get a reference to a NameSpace object.
    Set oNamespace = Application.GetNamespace("MAPI")'Open the Signed Message (.msg) file containing the shared item.
    Set oSharedItem = oNamespace.OpenSharedItem("C:\Temp\SignedMessage.msg")'Open the Regular Message (.msg) file containing the shared item.
    'Set oSharedItem = oNamespace.OpenSharedItem("C:\Temp\RegularMessage.msg")

    oSharedItem.Close (olDiscard)
    Set oSharedItem = Nothing

    'Add a reference to Microsoft Scripting Runtime
    Dim oFSO As New FileSystemObject

    ' Try to delete the Signed Message
    oFSO.DeleteFile ("C:\Temp\SignedMessage.msg")'Try to delete the Regular Message
    'oFSO.DeleteFile ("C:\Temp\RegularMessage.msg")

EndRoutine:
    On Error GoTo 0
    Set oSharedItem = Nothing
    Set oFSO = Nothing
    Set oNamespace = Nothing
Exit Sub
ErrRoutine:
Select Case Err.Number
    Case -2147024894 ' &H80070002
        ' Occurs if the specified file or URL could not
        ' be found, or the file or URL cannot be
        ' processed by the OpenSharedItem method.
        MsgBox Err.Description, _
        vbOKOnly, _
        Err.Number & " - " & Err.Source
    Case Else
        ' Any other error that may occur.
        MsgBox Err.Description, _
        vbOKOnly, _
        Err.Number & " - " & Err.Source
End Select
GoTo EndRoutine
End Sub