Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 ...
Bonne suite
 

C@thy

XLDnaute Barbatruc
Re : Corps du message

J'ai cherché mais pas encore tout pigé (c'est lonnnnng!!!)
par contre, j'ai testé, les 2 1ers caractères de l'objet sont bien TR
si ça peut faire avancer le schmilblick...

Bises

C@thy
 

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 ...
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 ?
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: ) et ne fonctionne pas toujours, loin de là, d'où ma méfiance ...
Bonne suite (et bonne lecture ...)
 

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 ...
Bon courage
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 ...
 

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 ...
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 ...
Bonne suite
 

C@thy

XLDnaute Barbatruc
Re : Corps du message

Ah voilà, super, ça maaaaarche,
il suffisait d'extraire le sting du body!!!

Bizz

Edit : ça ne marche pas sur le vrai mail, je regarde ce qui se passe...


C@thy
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Corps du message

Re ,
A voir quel type de retour est utilisé dans le mail ...
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 +
 

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…