Outlook e-postasını bir VBA komut dosyası içeren bir kural kullanarak nasıl filtreleyebilirsiniz?


13

Konu arama veya joker karakter içeren mesaj gövdeleri gibi varsayılan e-posta kurallarını kullanarak bazı şeyler mümkün değildir. Birden çok kelime yapabilirsiniz, ancak kelimelerin birbirlerinden bir karakter uzakta olması gerekiyorsa, aynı değildir. Outlook e-postasını filtrelemek için kendi Visual Basic for Applications kodumu nasıl yazabilirim?

Yanıtlar:


11

Bu basit filtrenin gerçekleşmesi için gereken tüm parçalar için yüksek ve alçak görünüyordum. Unix procmail filtrelerini kıyaslamadan kullanmak çok kolaydır. Tüm Microsoft Outlook sihirbazları joker karakter kullanarak basit bir filtre yoluna girerler. Microsoft'un varsayılan olarak sağladığı birçok e-posta filtresi koşulu yararlı olsa da hiçbir şey çalışan kodun esnekliğini ve özelleştirmesini yenemez.

  1. Kodunu yaz.

Alt-F11 VBA kod editörünü getirir. ThisOutlookSession'a çift tıklayın. Kodunu yaz. Benim durumumda konu satırında bir regex kullanıyor ve bunu bir alt klasörde DefaultFolder'a değil, kendi pst'ime taşıyor.

Sub filter(Item As Outlook.MailItem)
    Dim ns As Outlook.NameSpace
    Dim MailDest As Outlook.Folder
    Set ns = Application.GetNamespace("MAPI")
    Set Reg1 = CreateObject("VBScript.RegExp")
    Reg1.Global = True
    Reg1.Pattern = "(.*Abc.20.*)"
    If Reg1.Test(Item.Subject) Then
        Set MailDest = ns.Folders("Personal Folders").Folders("one").Folders("a")
        Item.Move MailDest
    End If
End Sub
  1. Bir gelen her e-postanın kodunu bir Kuralla çalıştırın.

Kurallar altında "Kuralları ve Uyarıları Yönet ..." seçeneğini seçin. Yeni kural gibi görünecek

Apply this rule after the message arrives run Project1.ThisOutlookSession.filter

Bunu almak için, Adım 1 için: Koşulları seçin: ileriye tıklayın. Tamam'ı tıklatarak tüm iletiler için geçerli olduğunu onaylayın. Seçim eylemleri için "bir komut dosyası çalıştır" seçeneğini işaretleyin, ardından filtre komut dosyasını seçmek için tıklayın ve İleri veya Son'u seçin. İstisnaları seçin için İleri veya Son'a tıklayın. VBA-Filter gibi iyi bir isim verin ve Bu kuralı aç'ı işaretleyin. Son'u tıklayın. Yerel bir klasörle başa çıktığından, bu kuralın çevrimiçi olarak veya başka bir cihazdan kontrol ettiğiniz e-posta için işe yaramayacağını onaylamak istediğinde Tamam'ı tıklayın. Kurallar ve Uyarılar iletişim kutusunda Tamam'ı tıklayın.

  1. Makrolar imzalanmadığında Outlook bundan hoşlanmaz. Makrolarınızı otomatik olarak imzalamak için bir sertifika oluşturun ve kullanın .

Makrolar ve kullanıcı tanımlı sütunlar oluşturma gibi diğer birçok kısmi çözümü okudum. Bu, UI sıralama veya filtrelemeye izin verir ancak tüm mesajları geldiğimde düzenler; bu da yapmak istediğim şey değildir.
Grant Bowman

1
Benim görünüm istemcim, outlook başlatırken vbscript vba-filter komutunu çalıştırma kuralını tutarsızlıkla devre dışı bırakır. Bu sorunlara neden oldu. Her kurala eklemek için vbscript üzerinde bir karakter sınırı vardır. Sürekli çalışabilmeleri için, daha az esnek olmasına rağmen, filtreleri standart Outlook filtreleri kullanarak her zaman işe yarayacak şekilde yeniden yazdım.
Grant Bowman

2
Bir betiği çalıştırmak için bu seçenek yoktu. Burada ilgili bir bağlantı bulundu: slipstick.com/outlook/rules/outlook-2016-run-a-script-rules
Jayan

Yukarıdaki kod benim için çalışmıyor. Abc.20'yi konu dosyasına koydum, ancak mesajlar asla Gelen kutusundan çıkmıyor.
Tensigh

1
Hata ayıklama penceresini kullanarak regex'in çalışmasını sağladım. Şimdi sadece doğru klasörlere geçme meselesi. Sanırım çözebilirim. Yardımınız için teşekkürler.
Tensigh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.