par roubech » 02 Fév 2011 à 00:44
d'apres ton pseudo, je suis tenté de penser que tu es étudiant et que tu essayes de modifier un agent que tu n'as pas développé.
je ne comprend pas pourquoi la personne qui a développé cette agent parcours tous les champs du doc pour trouver un champ précis. Elle ne connaissait pas la méthode NotesDocument.GetItemValue ?
par exemple au lieu de coder une fonction
[syntax="LotusScript"]Function WasPreviouslyForwarded(doc As NotesDocument) As Variant
'Vérifie si le mail a déja été transféré
Dim ItemCol As Variant
WasPreviouslyForwarded = False
ItemCol = Doc.Items
Forall Item In ItemCol
If Trim(Lcase(Item.Name)) = Trim(Lcase("UserMailForwarded")) Then
WasPreviouslyForwarded = True
Exit Function
End If
End Forall
End Function[/syntax]
pour ensuite faire
[syntax="LotusScript"]If Not(WasPreviouslyForwarded(doc)) Then Call ForwardEmail(db,Doc,Setting_Doc,Mailin_View)[/syntax]
tu peux directement faire
[syntax="LotusScript"]If ( doc.UserMailForwarded(0) = "1" ) Then
Call ForwardEmail(db,Doc,Setting_Doc,Mailin_View)
End if
[/syntax]
sinon, dans l'initialize, il y a un truc qui me choque : les variables setting_doc et Mailin_View sont déclarées puis passées en argument de la méthode ForwardEmail dans la boucle de parcours des docs, mais elles n'ont pas été initialisées avant
[syntax="LotusScript"]Sub Initialize
On Error Resume Next
Dim db As notesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim setting_doc As NotesDocument
Dim session As New NotesSession
Dim Mailin_View As NotesView
Dim MsgID_View As NotesView
Set db=session.currentdatabase
Set collection=db.unprocesseddocuments
Set doc=collection.getfirstdocument
'Email le message
While Not(doc Is Nothing)
'Si le mail a déja été envoyé alors on saute
If Not(WasPreviouslyForwarded(doc)) Then Call ForwardEmail(db,Doc,Setting_Doc,Mailin_View)
'marque le mail
Call session.Updateprocesseddoc(Doc)
Set doc=collection.getnextdocument(doc)
Wend
End Sub[/syntax]
Dans GenerateNewEmail, il y a une variable x de déclarée, mais pas initialisée et à chque le test If x < 1 Then ... ca correspond à quoi ?
sinon, pour en revenir à ton pb, la class NotesRichTextNavigator va te permettre de te balader dans le contenu du mail : le champ "Body" de type RichText. Mais ce n'est pas ce dont tu as besoin. Ton pb est que l'émetteur du mail que l'agent génère est le signataire de l'agent car ton mail est envoyé avec la méthode Email_Doc.Send False,ForwardMailTo
Tout comme l'explique Dominux sur son blog, lien donné par Michael
dans la partie
[syntax="LotusScript"] Elseif Lcase(Trim(item.name)) = Lcase(Trim("from")) Then
If x < 1 Then
temp = Doc.GetItemValue(Item.name)
Email_Doc.Principal = temp(0)
item.CopyItemToDocument Email_Doc,""
End If[/syntax]
tu renseigne le champ Principal du nouveau mail avec la valeur du champ From du mail reçus. Dominux te dit qu'il faut renseigner le champInetFrom dans le cas de mail envoyés vers internet
[syntax="LotusScript"]If x < 1 Then
Email_Doc.From = doc.GetItemValue("From")(0)
Email_Doc.Principal = doc.GetItemValue("From")(0)
Email_Doc.InetFrom = doc.GetItemValue("From")(0)
End If[/syntax]
Sinon " l'autre soluce" indiqué par Ogurama, c'est le cas 3 de Dominux