Page 1 sur 1

[RESOLU] Le code s'execute 2 fois (sans raison)

MessagePublié: 03 Fév 2014 à 15:34
par cyberscooty
j'ai un bout de code dans le masque "Memo" dans le sub "postsend" qui permet de créer une copie (très) cachée vers un autre destinataire lors d'envoi de mail

ça marche bien mais je reçois 2 fois le mail...j'ai l'impression que le code s’exécute 2 fois de suite et envoi 2 mails (c'est le dernier bug a régler avant mise en production GGGRRRR)
J'ai testé plusieurs choses mais à chaque fois je reçois 2 mails (tests sur 2 bases mails différentes)
Est ce que ça relève du bug ou ai-je mal fait quelque chose?

Ci dessous le code:

Code : Tout sélectionner
Sub Postsend(Source As Notesuidocument)
   
   If Not source Is Nothing Then
      Dim DocMail As NotesDocument     
      Dim Session As New NotesSession
      Dim rtItem As NotesrichTextItem
      Dim destinataire As String   
      Dim destinataireinitial As String
      Dim destinataireinitialtronque As String
      
           '================================================================      
      'Changer la valeur ci dessous - ne pas changer le reste du code   
      destinataire = "toto@domaine.com"
           '================================================================      
      
      Set DocMail = Session.CurrentDatabase.CreateDocument
      Call DocMail.ReplaceItemValue("Form","memo")
      destinataireinitial = Source.FieldGetText("SendTo")
      destinataireinitialtronque = Left$(destinataireinitial, 100)
      Call DocMail.ReplaceItemValue("Sendto",destinataire)
      Call DocMail.ReplaceItemValue("Subject" ,"[Redirect envoyé à " + destinataireinitialtronque + "] " + Source.FieldGetText("Subject") )
      Set rtItem = Source.Document.GetFirstItem("Body")
      Call rtItem.AppendText(" ")
      rtItem.AppendText(Chr(13) + "======================================" + Chr(13) + "Mail envoyé à : " + destinataireinitial)
      Call DocMail.CopyItem(rtItem,"")
      Call DocMail.Send(False)
      
   End If   
End Sub

Re: Le code s'execute 2 fois (sans raison)

MessagePublié: 03 Fév 2014 à 16:01
par Jérôme Deniau
Si ton postSend envoie un mail tu repasses dans l'événement postsend.
Solution mets un flag au premier passage dans le document et fais un test dessus et réinitialise ce flag dans le postopen etc....

Re: Le code s'execute 2 fois (sans raison)

MessagePublié: 03 Fév 2014 à 16:47
par cyberscooty
uhm...effectivement j'avais pas pensé à ça, merci.

J'ai testé de créer une variable genre passe=0 puis qui passe à 1 dans le code mais celle ci semble se réinitialiser la 2eme fois (donc même problème)
Comment créer une variable (globale) qui ne se réinitialise pas ?

Re: Le code s'execute 2 fois (sans raison)

MessagePublié: 03 Fév 2014 à 16:54
par Jérôme Deniau
Definir la variable dans globals dim vPostSend as integer (par exemple),
dans le postopen, mettre cette variable à 0 vPostSend=0
dans le postSend tester if vPostSend=0 then ..... 'pas envoyé on fait le boulot, et on metvPostSend=1

cela devrait le faire, sinon passer par un champ et le gérer dans le postSave pour le réinitialiser par exemple... tout dépend de ce que doit faire le PostSend, à quel moment et pourquoi....

Re: Le code s'execute 2 fois (sans raison)

MessagePublié: 03 Fév 2014 à 16:59
par cyberscooty
J'avais fait comme ça la 1ere fois mais ça ne marchait pas. En effet je n'avais pas déclaré dans globals (je débute un peu en script, désolé)
Bref, 2 minutes de recherche sur gooooogle, j'ai trouvé.
1. Click (Globals) on the Objects tab.
2. Select (Options), (Declarations), Initialize, or Terminate from the Objects tab.
3. Enter your LotusScript variable or subroutine in the Script area.
4. Refer to the subprogram or variable in any script in the application.


donc dans (Globals) j'ai créé une variable type booléen à False, dans le code je la passe à True avec le if qui va bien, etc........ça MARCHE!!!!

Merci, merci Jérôme!!!! :D :D :D

Re: [RESOLU] Le code s'execute 2 fois (sans raison)

MessagePublié: 03 Fév 2014 à 18:41
par d.bugger
Hmmm... Moi, je modifierais jamais le modèle mail. Sauf s'il n'y a pas d'autre possibilité.

As-tu pensé à activer Mail Journaling?

Re: [RESOLU] Le code s'execute 2 fois (sans raison)

MessagePublié: 04 Fév 2014 à 09:32
par Jérôme Deniau
Plutôt une règle de copie dans une base, car le mail journaling il faut l'accord de l'entreprise et définir qui peut voir quoi......

Re: [RESOLU] Le code s'execute 2 fois (sans raison)

MessagePublié: 04 Fév 2014 à 09:47
par d.bugger
Veux-tu dire que l'espionnage se fait sans accord de l'entreprise ?? :shock:

Re: [RESOLU] Le code s'execute 2 fois (sans raison)

MessagePublié: 04 Fév 2014 à 10:01
par Jérôme Deniau
Moi je ne sais pas, faut demander au posteur... (cyberscooty).

Re: [RESOLU] Le code s'execute 2 fois (sans raison)

MessagePublié: 04 Fév 2014 à 11:46
par cyberscooty
je l'accorde c'est un peu litigieux mais c'est un VIP qui le demande alors bon!
Créer une règle me dérange un peu car l'utilisateur peut la voir dans sa base
Le mail journaling je ne connais pas vraiment....mais pour moi c'était pour capter TOUS les messages de TOUS les utilisateurs, ce qui est inutile...

Merci a tous pour vos posts :D

Re: [RESOLU] Le code s'execute 2 fois (sans raison)

MessagePublié: 04 Fév 2014 à 12:04
par Michael DELIQUE
dans ce cas je te conseil vivement d'avoir une trace écrite et l'accord de ton responsable. sinon en cas de pb ça va te péter a la figure

Re: [RESOLU] Le code s'execute 2 fois (sans raison)

MessagePublié: 04 Fév 2014 à 14:35
par d.bugger
Du bon conseil ça !

Et quant au mail journaling : c'est invisible et paramétrable. Il faut
1/ créer la base,
2/ l'activer dans le serveur (doc Config, Routeur, Avancé) et
3/ régler le captage avec des règles (doc Config, Routeur, Restr & Contr, Règles).

Re: [RESOLU] Le code s'execute 2 fois (sans raison)

MessagePublié: 04 Fév 2014 à 19:46
par roubech
l'archivage au niveau de la boite mail a vocation de sauvegarde / récupération de place
alors que la journalisation a plutot vocation de tracabilité en cas de litige (archivage legal)

Re: [RESOLU] Le code s'execute 2 fois (sans raison)

MessagePublié: 04 Fév 2014 à 23:10
par d.bugger
:? Oui... vrai... mais pourquoi dis-tu ?