मुझे नहीं पता कि एक रेगेक्स सीधे नियम में उपयोग किया जा सकता है, लेकिन आप एक नियम को एक स्क्रिप्ट ट्रिगर कर सकते हैं और स्क्रिप्ट regexes का उपयोग कर सकते हैं। मुझे Outlook से नफरत है।
सबसे पहले, आपको टूल्स - मैक्रो - ओपन विजुअल बेसिक एडिटर (Alt-F11 शॉर्टकट) के माध्यम से स्क्रिप्ट संपादक खोलना होगा।
संपादक खुल जाएगा। इसमें ऊपरी-बाएं कोने में एक छोटे पैनल में एक परियोजना रूपरेखा होनी चाहिए। परियोजना को VBAProject.OTM के रूप में सूचीबद्ध किया जाएगा। Microsoft Office Outlook ऑब्जेक्ट्स को प्रकट करने के लिए इस आइटम का विस्तार करें। इस ऑट्यूशन सत्र को प्रकट करने के लिए इसका विस्तार करें। कोड संपादन फलक खोलने के लिए ThisOutlookSession को डबल-क्लिक करें (जो शायद खाली हो जाएगा)।
अगला चयन उपकरण मेनू | संदर्भ और RegExp संदर्भों को सक्षम करें जैसे कि "माइक्रोसॉफ्ट वीबीस्क्रिप्ट नियमित अभिव्यक्ति 5.5"
अब आप अपनी फ़िल्टरिंग कार्रवाई करने के लिए एक सबराउटिन बना सकते हैं। ध्यान दें कि किसी नियम द्वारा बुलाए गए सबराउटिन में Outlook के प्रकार का एक पैरामीटर होना चाहिए। MailItem। उदाहरण के लिए:
' note that Stack Overflow's syntax highlighting doesn't understand VBScript's
' comment character (the single quote) - it treats it as a string delimiter. To
' make the code appear correctly, each comment must be closed with another single
' quote so that the syntax highlighter will stop coloring everything as a string.'
Public Enum Actions
ACT_DELIVER = 0
ACT_DELETE = 1
ACT_QUARANTINE = 2
End Enum
Sub MyNiftyFilter(Item As Outlook.MailItem)
Dim Matches, Match
Dim RegEx As New RegExp
RegEx.IgnoreCase = True
' assume mail is good'
Dim Message As String: Message = ""
Dim Action As Actions: Action = ACT_DELIVER
' SPAM TEST: Illegal word in subject'
RegEx.Pattern = "(v\|agra|erection|penis|boner|pharmacy|painkiller|vicodin|valium|adderol|sex med|pills|pilules|viagra|cialis|levitra|rolex|diploma)"
If Action = ACT_DELIVER Then
If RegEx.Test(Item.Subject) Then
Action = ACT_QUARANTINE
Set Matches = RegEx.Execute(Item.Subject)
Message = "SPAM: Subject contains restricted word(s): " & JoinMatches(Matches, ",")
End If
End If
' other tests'
Select Case Action
Case Actions.ACT_QUARANTINE
Dim ns As Outlook.NameSpace
Set ns = Application.GetNamespace("MAPI")
Dim junk As Outlook.Folder
Set junk = ns.GetDefaultFolder(olFolderJunk)
Item.Subject = "SPAM: " & Item.Subject
If Item.BodyFormat = olFormatHTML Then
Item.HTMLBody = "<h2>" & Message & "</h2>" & Item.HTMLBody
Else
Item.Body = Message & vbCrLf & vbCrLf & Item.Body
End If
Item.Save
Item.Move junk
Case Actions.ACT_DELETE
' similar to above, but grab Deleted Items folder as destination of move'
Case Actions.ACT_DELIVER
' do nothing'
End Select
End Sub
Private Function JoinMatches(Matches, Delimeter)
Dim RVal: RVal = ""
For Each Match In Matches
If Len(RVal) <> 0 Then
RVal = RVal & ", " & Match.Value
Else
RVal = RVal & Match.Value
End If
Next
JoinMatches = RVal
End Function
अगला, आपको इस स्क्रिप्ट को ट्रिगर करने के लिए नियम (टूल्स - नियम और अलर्ट) बनाना होगा। विज़ार्ड लॉन्च करने के लिए संवाद पर नए नियम बटन पर क्लिक करें। नियम के लिए एक टेम्पलेट का चयन करें। "रिक्त नियम से प्रारंभ करें" श्रेणी से "टेम्पलेट आने पर संदेशों को चेक करें" चुनें। अगला पर क्लिक करें।
"केवल इस मशीन पर" स्थिति चुनें (सहज नहीं है?) और अगला क्लिक करें।
"एक स्क्रिप्ट चलाएं" विकल्प चुनें। जादूगर जहां यह अपने नए नियम से पता चलता के तल में, इसे पढ़ने करना चाहिए:
Apply this rule after the message arrives
on this machine only
run a script
वाक्यांश "एक स्क्रिप्ट" क्लिक करने योग्य लिंक है। इसे क्लिक करें और आउटलुक एक संवाद प्रदर्शित करेगा जो आपके द्वारा पहले बनाए गए सबराउटिन को सूचीबद्ध करेगा। अपने सबराउटिन का चयन करें और ओके बटन पर क्लिक करें।
आप नियम में अपवाद जोड़ने के लिए अगला क्लिक कर सकते हैं या यदि आपके पास कोई अपवाद नहीं है तो समाप्त क्लिक करें।
अब, हालांकि यह प्रक्रिया पर्याप्त रूप से गठित नहीं हुई थी, तब भी जब भी आप कोड को हस्ताक्षर करने के साथ स्क्रिप्ट पर हस्ताक्षर नहीं करते हैं, तब तक यह नियम Outlook को रोक और पुनरारंभ नहीं करेगा।
यदि आपके पास पहले से कोड कोडिंग कुंजी नहीं है, तो आप OpenSSL के साथ create one कर सकते हैं।
क्या मैंने उल्लेख किया कि मुझे Outlook से नफरत है?
क्या यह वास्तव में प्रोग्रामिंग से संबंधित है? मेरा मतलब है, आप नहीं पूछते कि रेगेक्स सही है या नहीं, केवल अगर दृष्टिकोण regexes –
का समर्थन करता है, तो वास्तव में इसका मतलब यह दोनों प्रश्नों के रूप में होता है। मैंने regexes का उपयोग नहीं किया है, इसलिए मैं भी इसके लिए अनिश्चित था। हालांकि, एक ही पहलू में, यदि Outlook regexes का समर्थन भी नहीं करता है, तो बिंदु मूक है, इसलिए वह थोडा था जहां मैं इसके साथ जा रहा था। – kcoppock
मुझे यह नहीं लगता कि यह महत्वपूर्ण है, ऐसा लगता है कि यह भी मिलान करता है = "[0-9] {4} - [0-9] {2}" –