Modification code Agent notes re-routage de mail entete from

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Modification code Agent notes re-routage de mail entete from

Messagepar etudiant95 » 25 Jan 2011 à 12:31

Bonjour,

Nous avons lotus notes 5.0.11. (2002), plus maintenu.
Un agent est installé pour certains utilisateurs pour faire en sorte que leurs mails soient re-routé vers d’autres adresses mails notamment chez des comptes orange.

Cette solution marchait parfaitement jusqu’à ce qu’orange mette a jour leur serveur de messagerie pour raison de conformité.
Maintenant les utilisateurs concernés ne voient pas le nom de l’expéditeur du mail.
Pour résoudre ce problème : orange nous indique qu’il faut ajouter dans l’entête du mail re-routé le champ « from » au lieu de « sender ».

Notre agent est un programme écrit en lotus script et je voudrais avoir votre avis pour m’indiquer les changements que je dois effectuer pour faire apparaître ce champ from.

Merci de votre aide.

Vous trouverez le code en PJ.
Dernière édition par etudiant95 le 25 Jan 2011 à 13:29, édité 1 fois.
etudiant95
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 6
Inscrit(e) le : 25 Jan 2011 à 12:14

Messagepar Michael DELIQUE » 25 Jan 2011 à 12:44

hello et welcome

déjà j'ai pas envi envi de dezipper ton code !

ensuite nous ne somme pas une SSII philantropique !
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar Michel Nico » 25 Jan 2011 à 13:53

totalement d'accord.
dans ton code tu dois faire le mémo quelque part et tu dois avoir l'utilisateur en nom aussi
tu fera dasn ton script avant l'envois
MemoDoc.from = nom
ou alors
MemoDoc.from = session.Commonusername
Michel Nico
Posteur néophyte
Posteur néophyte
 
Message(s) : 60
Inscrit(e) le : 18 Jan 2011 à 17:19
Localisation : Toulouse

Messagepar etudiant95 » 27 Jan 2011 à 11:24

Bonjour
Merci de votre réponse

Dans la fonction de génération du nouvel email (Generate new email)pour re-router il y a notamment ceci :

___________________________________
Email_Doc.MailForwarded = "1"
Forall item In doc.items
If Lcase(Trim(item.name)) = Lcase(Trim("from")) Then
Email_Doc.SendTo = ForwardMailTo
___________________________________

Je pense que c'est ici qu'il faut indiquer le from mais je ne vois comment faire.
De plus j'arrive a voir le nom de l'expediteur dans le corp du mail mais pas dans les entetes.

Dans cette fonction create body field le from est indiqué et affiché:
_____________________________________
'display from
ArrayVals = GetArrayValues(Doc.GetItemValue("from"))
Call rtitem.AppendText("De:" & ArrayVals & Chr(10))
____________________________________
Donc jy suis presque car jarrive a afficher l'expediteur dans le corps du mail pas dans les entete avec expediteur, destinataire , objet .
J'ai essayé de récupérer le GetArrayValues et de le mettre dans la fonction Generate new email et faire comme ceci mais sans succés :

Email_Doc.from = GetArrayValues(Doc.GetItemValue("from"))

bref je ne doit pas etre loin pour afficher ce from.

Avez vous une idée ?

Merci
Dernière édition par etudiant95 le 27 Jan 2011 à 11:28, édité 1 fois.
etudiant95
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 6
Inscrit(e) le : 25 Jan 2011 à 12:14

Messagepar Michael DELIQUE » 27 Jan 2011 à 11:27

salut

un articles qui devrait t'aider => http://www.dominux.net/dominux/dominux. ... OFRESJ.htm
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar etudiant95 » 28 Jan 2011 à 10:38

Bonjour,

J'ai laissé tombé pour l'instant niveau code. (pas assez d'exp et apres de nombreuse tentatives sans succés)

J'ai modifié l'entete du mail via notre logiciel anti-spam en ajoutant le champ "from : adresse_mail" et la donc on voit bien l'expediteur.

Si je pouvais faire apparaitre ce champs "from" en dur ca résoudrait le probleme.
Peut on faire quelque chose niveau lotus notes ?? modifier l'entete dés la reception ou l'envoie d'un mail ?

Merci de votre aide
etudiant95
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 6
Inscrit(e) le : 25 Jan 2011 à 12:14

Messagepar oguruma » 28 Jan 2011 à 12:24

Pour faire simple tu redéveloppe ton agent avec les fonctions MIME qui te permettra de construire un vrai mail au sens html il y a tout ce qu'il dans l'aide, sur le net et sur le forum, et aussi un peu courrrage
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE

Messagepar oguruma » 28 Jan 2011 à 12:26

autre soluce à moindres effort tu écrits directement dans la mail.box en reconstruisant le message... y a une classe sur le forum qui fait cela.... tu verras elle est très simple je l'ai mise en production pour des envois sur le net et autres webmail elle fonctionne bien
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE

Messagepar etudiant95 » 28 Jan 2011 à 16:30

Merci de ces liens.

j'ai lotus 5.0.11 et je souhaite utiliser la classe NotesRichTextNavigator
mais je ne l'ai pas. J'ai regardé dans la sorte de "javadoc" et elle n'est pas présente.

Comment fait on pour ajouter cette classe dans lotus notes 5.0.11 ?
etudiant95
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 6
Inscrit(e) le : 25 Jan 2011 à 12:14

Messagepar etudiant95 » 31 Jan 2011 à 09:36

Bonjour,

je n'ai pas compris :

"autre soluce à moindres effort tu écrits directement dans la mail.box en reconstruisant le message... "

Pouvez vous détailler svp

merci
etudiant95
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 6
Inscrit(e) le : 25 Jan 2011 à 12:14

Messagepar etudiant95 » 01 Fév 2011 à 10:36

Bonjour,

Je pense avoir trouver un code qui répond à ma question :
http://www.keysolutions.com/notesfaq/canforward.html

le problème est qu'il y a des classes qui ne font pas partie de notre version notes 5. exemple :
'Dim rtnav As NotesRichTextNavigator
'Set rtnav = rtitem.CreateNavigator

Message d’erreur lors de la compilation : class NotesRichTextNavigator not found

Comment faire pour ajouter la classe NotesRichTextNavigator sur notes 5.0.11 ?

Merci
etudiant95
Découvre Dominoarea
Découvre Dominoarea
 
Message(s) : 6
Inscrit(e) le : 25 Jan 2011 à 12:14

Messagepar 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
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille


Retour vers Développement

cron