Bonjour,
J'essaie de créer une macro sur Outlook qui va m'afficher une page web à chaque email reçu. Je souhaite en fait envoyer les informations d'un email reçu (sujet , expéditeur , destinataire) vers une application serveur qui ne reçoit des paramètres qu'avec une ligne url. Après le serveur transmettra ces ces données dans le dossier client concerné. C'est une application propriétaire , je ne reviens pas dessus car la n'est pas le problème. Je suis donc arrivé depuis Outlook à créer ma ligne url et à l'envoyer sur l'explorateur intégré en utilisant la barre WEB d'Outlook. Voici le programme:
Mon problème est que si il y a plus d'un email non lu je suis obligé d'attendre la fin de chaque envoi de l'url et de son execution par le serveur pour envoyer l'url suivant. La seule solution que j'ai trouvée pour le moment c'est la boucle d'attente avec DoEvents mais le problème c'est que si le serveur est "mou du genou" et met plus de temps que ma boucle le prévoit je risque de zapper un message. Donc l'idéal serait de tester l'objet qui affiche la page pour savoir si elle est arrivée à son terme. Il y a en effet une page d'accusé de réception qui s'affiche à la fin du traitement par le serveur. J'ai cherché mais je n'ai pas trouvé. Si quelqu'un sait comment faire. Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Private Sub Application_NewMail() Dim mesBarres As CommandBars Dim mabarre As CommandBar Dim MaBarre2 As CommandBar Dim lebouton As CommandBarButton Dim oNS As NameSpace Dim oFolder As MAPIFolder Dim oItem As Object Dim oNewMail As MailItem Dim ph As String Set oNS = GetNamespace("MAPI") Set oFolder = oNS.GetDefaultFolder(olFolderInbox) 'Set oNewMail = oFolder.Items.GetLast Set mesBarres = ActiveExplorer.CommandBars RC = Chr(13) & Chr(10) For Each mabarre In mesBarres ' recherche de la barre WEB If mabarre.NameLocal = "Web" Then Set MaBarre2 = mabarre 'Barre WEB trouvée !! End If Next If MaBarre2 Is Nothing Then MsgBox ("Barre WEB non trouvée !") Exit Sub End If X = MaBarre2.Controls.Count For n = 1 To oFolder.Items.Count Set oNewMail = oFolder.Items(n) If oNewMail.UnRead = True Then 'Si le message est non lu alors on l'envoi au serveur With oNewMail destinataire = .ReceivedByName ph = "xxx&xxx&reload=0&objet=instruction&msg=" & "Un email pour " & destinataire & " est arrivé : " & RC & "Sujet = " & .Subject & RC & "Expéditeur = " & .SenderName & RC ph = URLEncode(ph, False) 'MsgBox .Subject & " " & .SenderName MaBarre2.Controls(X).Text = "http://192.168.1.2/clients?" & ph End With oNewMail.UnRead = False ' On passe le message en lu For intWait = 1 To 1000000 DoEvents Next End If Next End Sub
Partager