Chaque fois que j'ajoute mon script à une règle que j'ai configurée dans Outlook, il définit ma règle uniquement sur le côté client. La règle est utilisée pour obtenir un mot spécifique dans la ligne d'objet et un mot spécifique dans le corps, puis déplacez l'e-mail dans un sous-dossier de la boîte de réception, puis exécutez un script. La règle actuelle s'exécute lorsque je reçois l'e-mail en déplaçant l'e-mail dans le dossier dirigé, mais le script ne s'exécute pas à moins que je clique manuellement sur la règle pour exécuter maintenant. Comment pourrais-je arriver à l'endroit où il serait traité sur le côté serveur uniquement afin que je n'aie pas à exécuter manuellement la règle pour exécuter le script. Voici ci-dessous mon script:Outlook Rule n'exécutera pas de script à moins d'être exécuté manuellement
Public Sub Application_NewMail(myMail As MailItem)
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Dim dbName As String
dbName = "M:\CRM\Custom CRM\CRM.accdb"
Set con = New ADODB.Connection
con.ConnectionString = _
"Provider = Microsoft.ACE.OLEDB.12.0; " & _
"Data Source = " & dbName & "; " & _
"Persist Security Info = False; " & _
"Mode = readwrite;"
con.Open
' Create 2 recordset objects for data manipulation throughout the project
Set rs = New ADODB.Recordset
With rs
.CursorLocation = adUseClient
.ActiveConnection = con
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
End With
Dim ns As Outlook.NameSpace
Dim InBoxFolder As MAPIFolder
Dim InBoxItem As Object 'MailItem
Dim Contents As String, Delimiter As String
Dim Prop, Result
Dim i As Long, j As Long, k As Long
Dim myOlApp As Object
Set myOlApp = CreateObject("Outlook.Application")
'Setup an array with all properties that can be found in the mail
Prop = Array("Name", "Email", "Phone", "I am an")
'The delimiter after the property
Delimiter = ":"
Set ns = Session.Application.GetNamespace("MAPI")
'Access the inbox folder
Set InBoxFolder = ns.GetDefaultFolder(olFolderInbox)
Set InBoxFolder = InBoxFolder.Folders("MBAA LEADS")
For Each InBoxItem In InBoxFolder.Items
'Only process mails
If Not TypeOf InBoxItem Is MailItem Then GoTo SkipItem
'Already processed?
If Not InBoxItem.UnRead Then GoTo SkipItem
'Mark as read
InBoxItem.UnRead = False
'Get the body
Contents = InBoxItem.Body
'Create space for the result
ReDim Result(LBound(Prop) To UBound(Prop)) As String
'Search each property
i = 1
rs.Open ("Prospects")
rs.AddNew
For k = LBound(Prop) To UBound(Prop)
'MsgBox k
'Find the property (after the last position)
i = InStr(i, Contents, Prop(k), vbTextCompare)
If i = 0 Then GoTo NextProp
'Find the delimiter after the property
i = InStr(i, Contents, Delimiter)
If i = 0 Then GoTo NextProp
'Find the end of this line
j = InStr(i, Contents, vbCr)
If j = 0 Then GoTo NextProp
'Store the related part
Result(k) = Trim$(Mid$(Contents, i + Len(Delimiter), j - i - Len(Delimiter)))
If (k = 0) Then
'First Name
rs![First Name] = StrConv(Trim(Mid(CStr(Result(k)), 1, InStr(CStr(Result(k)), " "))), vbProperCase)
'Last Name
rs![Last Name] = StrConv(Trim(Mid(CStr(Result(k)), InStrRev(CStr(Result(k)), " ") + 1)), vbProperCase)
MkDir ("M:\CRM\PROSPECTS\" & StrConv(Trim(Mid(CStr(Result(k)), 1, InStr(CStr(Result(k)), " "))), vbProperCase) & " " & StrConv(Trim(Mid(CStr(Result(k)), InStrRev(CStr(Result(k)), " ") + 1)), vbProperCase) & "")
'Copy Initial Email Inquiry
InBoxItem.SaveAs "M:\CRM\PROSPECTS\" & StrConv(Trim(Mid(CStr(Result(k)), 1, InStr(CStr(Result(k)), " "))), vbProperCase) & " " & StrConv(Trim(Mid(CStr(Result(k)), InStrRev(CStr(Result(k)), " ") + 1)), vbProperCase) & "\Initial Email-MBAA WEBSITE.msg"
ElseIf (k = 1) Then
rs![E-mail Address] = Trim(Mid(CStr(Result(k)), 1, InStr(CStr(Result(k)), " ")))
ElseIf (k = 2) Then
rs![Home Phone] = Result(k)
ElseIf (k = 3) Then
'Check customer type
If CStr(Result(k)) Like "*Self Insured Group*" Then
rs![Lead Type] = 1 'Self Insured Group
ElseIf CStr(Result(k)) Like "*Insurance Company*" Then
rs![Lead Type] = 2 'Insurance Company
ElseIf CStr(Result(k)) Like "*Individual Patient*" Then
rs![Lead Type] = 3 'Consumer
ElseIf CStr(Result(k)) Like "*Attorney*" Then
rs![Lead Type] = 4 'Attorney
ElseIf CStr(Result(k)) Like "*Government*" Then
rs![Lead Type] = 5 'Attorney
ElseIf CStr(Result(k)) Like "*Physician*" Then
rs![Lead Type] = 6 'Physician
ElseIf CStr(Result(k)) Like "*International Company*" Then
rs![Lead Type] = 7 'International Company
ElseIf CStr(Result(k)) Like "*Broker*" Then
rs![Lead Type] = 8 'Broker
ElseIf CStr(Result(k)) Like "*Association/Organization*" Then
rs![Lead Type] = 19 'Association/Organization
ElseIf CStr(Result(k)) Like "*Other*" Then
rs![Lead Type] = 9 'Other
End If
End If
NextProp:
Next
rs![CreatedOn] = InBoxItem.SentOn
rs![Source] = 13 'MBAA WEBSITE
rs.Update
rs.Close
SkipItem:
Next
con.Close
End Sub