Corps du message

C@thy

XLDnaute Barbatruc
Bonjour le forum,

Lorsqu'un mail comporte au début de l'objet "TR"
c'est qu'il a été transféré.

Dans ce cas, je dois récupérer le nom de l'émetteur du message initial

Par exemple :
objet : TR Demande de renseignements

corps du message :

blablabla blabla bla

Cordialement,

M. Machin

__________________________________________
De : Germaine DUPONT
Envoyé : jeudi 8 décembre 2011 15:54
À : TOUT-SERV-OPERATIONNELS
Objet : Indisponibilité WiFi
Importance : Haute


Corps du message initial

etc..

je cherche à récupérer Germaine DUPONT...

Si vous avez une petite idée sur la question, merci d'éclairer ma lanterne...

Bises

C@thy
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Corps du message

Bonjour Cathy :),
Jettes un œil du côté de Application.NewMailEx, c'est ce qui permet d'intercepter un mail rentrant, mais attention, subtilement, je ne suis pas sûr que Tr: (comme Re:, Lu:, etc.) fassent vraiment parti de l'objet, car si tu fais un tri sur le sujet, il ne tient pas compte de ces mini-entêtes dans le tri :eek:...
Bonne suite :cool:
 

C@thy

XLDnaute Barbatruc
Re : Corps du message

Voici ce que donne l'aide :
Code:
Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
    Dim mai As Object
    Dim intInitial As Integer
    Dim intFinal As Integer
    Dim strEntryId As String
    Dim intLength As Integer
    intInitial = 1
    intLength = Len(EntryIDCollection)
    MsgBox "Collection of EntryIds: " & EntryIDCollection
    intFinal = InStr(intInitial, EntryIDCollection, ",")
    Do While intFinal <> 0
        strEntryId = Strings.Mid(EntryIDCollection, intInitial, (intFinal - intInitial))
        MsgBox "EntryId: " & strEntryId
        Set mai = Application.Session.GetItemFromID(strEntryId)
        MsgBox mai.Subject
        intInitial = intFinal + 1
        intFinal = InStr(intInitial, EntryIDCollection, ",")
    Loop
    strEntryId = Strings.Mid(EntryIDCollection, intInitial, (intLength - intInitial) + 1)
    MsgBox strEntryId
    Set mai = Application.Session.GetItemFromID(strEntryId)
    MsgBox mai.Subject
End Sub
Comme d'habitude, l'aide My crotte soft est très explicite si on connaît bien le sujet, sinon, accroche-toi!!!;)

Bizz

C@thy
 

JNP

XLDnaute Barbatruc
Re : Corps du message

Re :),
par contre, j'ai testé, les 2 1ers caractères de l'objet sont bien TR
Tu l'as testé comment ? Si c'est avec un Copier/Coller, ça ne veux pas dire que tu n'as pas perdu des balises invisibles au passage :rolleyes:...
Comme je te l'ai dit, fait un tri par objet, et explique moi pourquoi tu as dans le tri
...
Les dix commandements
Tr: Les dix commendements
Re: Les dix commandements
Les neufs suivants
...
Etrange, non :eek: ?
D'autre part, les règles que j'avais mis en place pour trier les Remis: et Lu: sont assez fantaisistes (sans compter qu'il y a les étrangers qui te renvoient des Read: ou Leido: :eek:) et ne fonctionne pas toujours, loin de là, d'où ma méfiance :rolleyes:...
Bonne suite (et bonne lecture :p...) :cool:
 

JNP

XLDnaute Barbatruc
Re : Corps du message

Re :),
Voici ce que donne l'aide :
C'est marrant, l'aide 2010 est plus prolixe
Code:
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String
Dim varEntryIDs
Dim objItem
Dim i As Integer
varEntryIDs = Split(EntryIDCollection, ",")
For i = 0 To UBound(varEntryIDs)
Set objItem = Application.Session.GetItemFromID(varEntryIDs(i))
Debug.Print "NewMailEx " & objItem.Subject
Next
End Sub
mais en principe fourni pour compatibilité descendante :rolleyes:...
Bon courage :cool:
PS : j'aime pas trop bidouiller le VBA de mon OutLook préféré, donc, sauf cas d'extrème nécessité, je ne fais pas de test :eek:...
 

C@thy

XLDnaute Barbatruc
Re : Corps du message

Oui, j'imagine bien que toi, tu as compris l'aide, moi, c'est pas gagné...

est-ce qu'on peut récupérer le corps dans une variable et rechercher ce qui se trouve entre "De : " et "Envoyé"?

Peut-être un petit air de reggae???

Bises

C@thy
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Corps du message

Re :),
Tu vas récupérer le corps de message avec .Body :rolleyes:...
Après, RegExp sera plus sûr pour extraire entre "De : " et "Envoyé : ", mais tu peux déjà utiliser InStr
Code:
Sub test()
Dim MaString As String, I As Byte, J As Byte
MaString = "Cordialement," & vbCrLf & "M.Machin" & vbCrLf & "__________________________________________" _
    & vbCrLf & "De : Germaine DUPONT" & vbCrLf & "Envoyé : jeudi 8 décembre 2011 15:54"
MsgBox MaString
I = InStr(1, MaString, vbCrLf & "De : ")
MaString = Mid(MaString, I + 7, Len(MaString) - I - 6)
J = InStr(1, MaString, vbCrLf & "Envoyé : ")
MaString = Left(MaString, J - 1)
MsgBox MaString
End Sub
bien que l'un comme l'autre ne sera pas une science exacte :rolleyes:...
Bonne suite :cool:
 

JNP

XLDnaute Barbatruc
Re : Corps du message

Re :),
A voir quel type de retour est utilisé dans le mail :rolleyes:...
Code:
Sub test()
Dim MaString As String
MaString = vbCrLf
MsgBox Asc(MaString)
MaString = vbCr
MsgBox Asc(MaString)
MaString = vbLf
MsgBox Asc(MaString)
End Sub
A + :cool:
 

C@thy

XLDnaute Barbatruc
Re : Corps du message

Coucou JNP,

après moulte tentatives de décortiquer la chaîne de caractères, je me suis aperçue de la chose suivante :
dans le "De : " le 1er espace n'est pas un espace code 32 mais un espace code 160, alors que le 2ème espace (après le : ) est bien code 32
donc quand je recherche la chaîne "De : " il trouve 0

Comment puis-je lui dire : rechercher la chaîle De + code 160 + : +code32???

Merciiiiiiiiiiiiiiii

Bises

C@thy
 

Statistiques des forums

Discussions
312 348
Messages
2 087 506
Membres
103 566
dernier inscrit
c@b@l77540