1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
Sub test()
Dim Oitem As Object
Set Oitem = ActiveInspector.CurrentItem 'désigne l'élément actif càd le mail le contact ou rdv...
If Oitem.Class <> olMail Then Exit Sub
MsgBox GetToFromHeader(Oitem)
End Sub
Function GetToFromHeader(objMail As Outlook.MailItem) As String
'---------------------------------------------------------------------------------------
' Procedure : GetToFromHeader
' Author : OLIV- from original code brettdj
' Date : 04/06/2015
' Purpose :
'---------------------------------------------------------------------------------------
'
Dim objRegex As Object
Dim objRegM As Object
Dim MailHeader As String
Dim ExtractText As String
Dim i, j
Const PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001F"
MailHeader = objMail.propertyAccessor.GetProperty(PR_TRANSPORT_MESSAGE_HEADERS)
Set objRegex = CreateObject("vbscript.regexp")
Dim Patterns
Patterns = Array("\nTo:.+<([a-z0-9][a-z0-9-.]{0,32}[a-z0-9]\@[a-z0-9][a-z0-9-]{0,32}[a-z0-9](?:\.[a-z]{2,5}){1,2})>$", _
"\nTo:.([a-z0-9][a-z0-9-.]{0,32}[a-z0-9]\@[a-z0-9][a-z0-9-]{0,32}[a-z0-9](?:\.[a-z]{2,5}){1,2})\b")
For j = LBound(Patterns) To UBound(Patterns)
With objRegex
.Global = True
.ignorecase = True
.MultiLine = True
'.Pattern = "(\n)To:.*<(.+)>"
'.Pattern = "\nTo:.([a-z0-9][a-z0-9-.]{0,32}[a-z0-9]\@[a-z0-9][a-z0-9-]{0,32}[a-z0-9](?:\.[a-z]{2,5}){1,2})\b"
.Pattern = Patterns(j)
If .test(MailHeader) Then
Set objRegM = .Execute(MailHeader)
For i = 0 To objRegM(0).submatches.Count - 1
If InStr(1, objRegM(0).submatches(i), "@", vbTextCompare) Then
GetToFromHeader = objRegM(0).submatches(i)
Exit Function
End If
Next i
Else
GetToFromHeader = "No match"
End If
End With
Next j
End Function |
Partager