Nous utilisons une base journal qui fait tourner un agent qui reçoit le courrier en arrivée, qui collecte les différentes informations du mail (expéditeur, date, body, etc...) et les copie dans un nouveau document, dans la vue Courrier en Arrivée.
Pour simplifier le problème, tout fonctionne bien depuis plusieurs années en ce qui concerne les mails envoyés depuis des OS Windows, par contre dès qu'un mail est envoyé depuis un MAC, nous avons le texte mais la ou les pièces jointes sont systématiquement manquantes (après plusieurs vérifications, le mail arrive bel et bien entier à l'agent, la perte s'effectue après traitement).
Une différence que j'ai remarqué est qu'un mail "normal" à un seul champ Body de type Texte Riche, alors que le mail MAC à plusieurs champs Body (10) de type MIME. Je ne sais pas si le problème viens de là.
Voici le code en question :
- Code : Tout sélectionner
Sub Initialize
On Error Goto ErrorRoutine
Dim s As New notesSession
Dim db As notesDatabase
Dim coldoc As notesdocumentCollection
Dim doc As notesdocument
Dim docMail As notesdocument
Dim docParam As notesdocument
Set db = s.CurrentDatabase
Set docMail = s.DocumentContext
Set docParam = db.GetProfileDocument("FrmPrm")
If docParam Is Nothing Then
Msgbox "AGENT ROUTAGE MAIL BD : " & db.FileName & " L'agent ne recupère pas le document de parametrage FrmPrm "
End If
If docMail Is Nothing Then
Msgbox "AGENT ROUTAGE MAIL BD : " & db.FileName & " L'agent ne recupère aucun mail à router"
Exit Sub
End If
If Not docMail Is Nothing Then
Set doc = New notesdocument(db)
Call doc.ReplaceItemValue("EvnEmisLe" , Now)
Call doc.ReplaceItemValue("EvnEmisPar", docMail.GetItemValue("From")(0) )
Call doc.ReplaceItemValue("EvnMajLe" , Now)
Call doc.ReplaceItemValue("PostedDate", Now)
Call doc.ReplaceItemValue("EvnMajPar", docMail.GetItemValue("From")(0))
Call doc.ReplaceItemValue("EvnEmtNom", docMail.GetItemValue("From")(0))
Call doc.ReplaceItemValue("EvnLectTxt" , docParam.GetItemValue("DftCrrLct")(0) )
Call doc.ReplaceItemValue("EvnAutTxt", docParam.GetItemValue("DftCrrMaj")(0) )
Call doc.ReplaceItemValue("EvnEmtEtb", Strtoken(docMail.GetItemValue("From")(0) , "@", 2 ) )
Call doc.ReplaceItemValue("EvnObj", docMail.GetItemValue("Subject")(0) )
Call doc.replaceItemValue("SendTo", docMail.getItemValue("SendTo") )
Call doc.ReplaceItemValue("Subject", docMail.GetItemValue("Subject")(0) )
Call doc.replaceItemValue("CopyTo", docMail.getItemValue("CopyTo") )
Dim readersItem As New NotesItem(doc, "EvnLect_calculé", "", READERS)
Dim authorsItem As New NotesItem(doc, "EvnAuteur_calculé", "", AUTHORS)
Call readersItem.AppendToTextList(docParam.GetItemValue("DftCrrLct")(0))
Call readersItem.AppendToTextList("[admin]")
Call authorsItem.AppendToTextList(docParam.GetItemValue("DftCrrMaj")(0))
Call authorsItem.AppendToTextList("[admin]")
If docMail.GetItemValue("ReplyDate")(0) = "" Then
Call doc.ReplaceItemValue("EvnSit", "")
Call doc.ReplaceItemValue("EvnEch" , "")
Else
Call doc.ReplaceItemValue("EvnSit", "A faire")
Call doc.ReplaceItemValue("EvnEch" , docMail.GetItemValue("ReplyDate")(0) )
End If
Dim ItemNom As NotesItem
Set ItemNom = doc.GetFirstItem("EvnEmtNom")
If ItemNom.Contains({"}) Then
ItemNom.Values = Strtoken(ItemNom.Values ,{"}, 1 )
End If
Dim ItemEmbEtb As NotesItem
Set ItemEmbEtb = doc.GetFirstItem("EvnEmtEtb")
If ItemEmbEtb.Contains({>}) Then
ItemEmbEtb.Values = Strtoken(ItemEmbEtb.Values ,{>}, 1 )
End If
Dim itemA As NotesItem
'...set value of doc...
Set itemA = docMail.GetFirstItem( "Body" )
' Call itemA.CopyItemToDocument( doc, "Body_1" )
Call itemA.CopyItemToDocument( doc, "Body" )
Call doc.ReplaceItemValue("DisplaySent", doc.GetItemValue("EvnEmtNom")(0) )
Call doc.ComputeWithForm(True, False)
Call doc.ReplaceItemValue("Form" , "MemoArr")
Call doc.Save(True, False)
Call doc.PutInFolder( "DssArriv" , True )
Msgbox "AGENT ROUTAGE MAIL BD : Mail routé dans le dossier Courrier en Arrivée"
Call docMail.Remove(True)
End If
Msgbox "AGENT ROUTAGE MAIL BD : " & db.FileName & " Fin Exécution"
Exit Sub
ErrorRoutine :
Msgbox "Erreur Agent Routage Mail " & db.FileName & " "& Str(Erl) & ": " & Error$
Call docMail.PutInFolder("Mail Non Traite" , True)
Exit Sub
End Sub
Voyez vous ce qui pourrait expliquer la perte de pièce jointe ?
Merci d'avance.
Cordialement,
Guillaume.