Page 1 sur 1

script pour envoer un mail dont on choisit l'expediteur

MessagePublié: 11 Sep 2003 à 16:07
par PAT
Quelqu'un sait-il s'il est possible, en programmation Notes (n'importe quel langage) de faire un script qui compose et envoit un message dans lequel le programmeur peut indiquer quel est le nom de l'expediteur du message (comme la norme SMTP le permet d'ailleurs) en parametre (du type 'Sender') ?

Re: script pour envoer un mail dont on choisit l'expediteur

MessagePublié: 15 Sep 2003 à 11:48
par Julien
Cherche dans les archives, la réponse a déjà été donnée.(NON, mais il existe quelques astuces)

Re: script pour envoer un mail dont on choisit l'expediteur

MessagePublié: 15 Sep 2003 à 13:19
par PAT
J'ai deja recherché dans les archives mais peut-etre n'ai je pas utilisé le bon mot-cle. Quel mot-cle faut-il rechercher pour être sûr de tombre sur ces articles ?

Re: script pour envoer un mail dont on choisit l'expediteur

MessagePublié: 17 Sep 2003 à 09:52
par Cedric
Une solution est de créer le memo directement dans la base mail.boxde renseigner ses champs (dont le From)puis simplement de faire un doc.savele routeur prend alors de suite le documentL'astuce réside dans le faire de ne pas utiliser la méthode send de NotesDocument.

Re: script pour envoer un mail dont on choisit l'expediteur

MessagePublié: 17 Sep 2003 à 11:15
par PAT
- De quelle mail.box parles-tu, celle du serveur ou celle du client ?- Comment fait-on pour créer (je veux dire par script) un document directement dans la mail.box ?- Comment renseigner le champs From ? (je ne veux pas de masque interactif mais un script transparent)- J'ai entendu parle du champs ReplyTo. Est-ce le même que le champs From dont tu parles ?merci d'avance.

Re: script pour envoer un mail dont on choisit l'expediteur

MessagePublié: 17 Sep 2003 à 13:39
par Cedric
- De quelle mail.box parles-tu, celle du serveur ou celle du client ?Celle du serveur. Sur le client, je ne suis pas certain que la solution fonctionne.Pour y accéder, tu peux utiliser la variable Notes MailServer qui te permet de savoir quel est le serveur de messagerie courant de l"utilisateurEnsuite, il ne te reste plus qu'à taper dans la base dont le fichier est mail.box.A noter que si le serveur possède plusieurs bases mailbox, l'accès à mail.box continue à fonctionner, malgré le fait que le fichier n'existe pas. Le serveur redirige automatiquement sur une des bases existantes (compatibilité descendante oblige :o))- Comment fait-on pour créer (je veux dire par script) un document directement dans la mail.box ?Comme pour créer un document en LotusScript dans n'importe quelle base.- Comment renseigner le champs From ? (je ne veux pas de masque interactif mais un script transparent)Il suffit d'affecter le champ à partir du document (NotesDocument.From="Toto") par exemple- J'ai entendu parle du champs ReplyTo. Est-ce le même que le champs From dont tu parles ?Le champ ReplyTo ne servira que si l'utilisateur fait un reply. S'il fait un reply c'est ce champ qui est regardé d'abord, puis le champ From.Tiens, voici le code, ça me semble plus parlant que 3 milliards d'explications :Sub Initialize Dim S As New NotesSession Dim MailBoxDb As NotesDatabase Dim MailServerName As String Dim Memo As NotesDocument ' Recherche du mailserver de l'utilisateur MailServerName = S.GetEnvironmentString("MailServer",True) ' recherche de la mail.box sur ce serveur Set MailBoxDb = S.GetDatabase( MailServerName, "mail.box" ) ' création d'un mémo vierge Set Memo = MailBoxDb.CreateDocument ' Initialisation du mémo Memo.Form="Memo" ' L'émetteur Memo.From = "Calimero@la.haut" ' Véritable destinataire, du point de vue du routeur Memo.Recipients = "destinataire@la.bas" ' Destinataire du point de vue de l'affichage dans le client Notes Memo.SendTo = "Destinataire" Memo.Subject = "Personne ne m'aime" ' Sans cela, le client Notes ouvre le mémo en édition lors de la lecture du mail Memo.PostedDate = Now ' Enregistrement dans la mail.box qui a pour effet de lancer le routage Memo.Save False,False End SubA noter que lors de la réception du document le champ $UpdatedBy contient en premier élément le nom réel de l'émetteur du mémo !!!!!

Re: script pour envoer un mail dont on choisit l'expediteur

MessagePublié: 18 Sep 2003 à 09:15
par PAT
Genial ton code !Je suis spécialisé en Admin mais reellement debutant en dev ...Je ne voudrais pas abuser mais je me demande maintenant comment insérer ce code dans un agent tournant sur une BAL Notes qui re-expedierait tout nouveau message entrant vers une adresse e-mail donné avec une adresse d'expediteir donnée (en fait celle du mail entrant initial).Comment, par script, récupérer les infos du mail initial pour les re-injecter dans le mail à re-expédier ?Encore merci grand chef !

Re: script pour envoer un mail dont on choisit l'expediteur

MessagePublié: 18 Sep 2003 à 09:37
par Raziel
Salut,Tu créé un agent partagé qui se lance lors de la réception d'un nouveau courrier (option "Quand cet agent doit il être exécuté").Ensuite tu met dans ton agent le code suivantdim session as new notessessiondim db as notesdatabasedim docCol as notesdocumentcollectiondim doc as notesdocumentset db = session.currentdatabaseset docCol = db.unprocesseddocumentsset doc = docCol.getfirstdocumentwhile not doc is nothing// insérer ici le code ............' Passage au doc suivantset doc = docCol.getnextdocument(doc)wend

Re: script pour envoer un mail dont on choisit l'expediteur

MessagePublié: 18 Sep 2003 à 09:44
par Cedric
Tu crées un agent sur réception de courrier. "Lorsque vous avez reçu du courrier"Dans le code tu mets ça:Sub Initialize Dim S As New NotesSession Dim MailBoxDb As NotesDatabase Dim MailServerName As String Dim Memo As NotesDocument ' Recherche du mailserver de l'utilisateur MailServerName = S.GetEnvironmentString("MailServer",True) ' recherche de la mail.box sur ce serveur Set MailBoxDb = S.GetDatabase( MailServerName, "mail.box" ) Dim MailMemo As NotesDocument Dim CollMemos As NotesDocumentCollection Set CollMemo = S.CurrentDatabase.UnprocessedDocuments Set MailMemo = CollMemo.GetFirstDocument While Not MailMemo Is Nothing ForwardMemo MailBoxDb , MailMemo S.UpdateProcessedDoc MailMemo Set MailMemo = CollMemo.GetNextDocument( MailMemo ) WendEnd SubSub ForwardMemo ( MailBoxDb As NotesDatabase , Doc As NotesDocument ) ' Copie du mémo dans la base mail.box Set Memo = Doc.CopyToDatabase( MailBoxDb ) ' Initialisation du mémo ' Pas nécessaire d'affecter le masque, ça dépend du cas ' Memo.Form="Memo" ' L'émetteur Memo.From = "Calimero@la.haut" ' Véritable destinataire, du point de vue du routeur Memo.Recipients = "destinataire@la.bas" ' Destinataire du point de vue de l'affichage dans le client Notes Memo.SendTo = "Destinataire" Memo.Subject = "Personne ne m'aime" ' Sans cela, le client Notes ouvre le mémo en édition lors de la lecture du mail Memo.PostedDate = Now ' Enregistrement dans la mail.box qui a pour effet de lancer le routage Memo.Save False,False End SubEt halte à la flatterie :o)))

Re: script pour envoer un mail dont on choisit l'expediteur

MessagePublié: 19 Sep 2003 à 14:07
par PAT
Malgre quelques erreurs de syntaxe (tu as défini une variable en l'appelant CollMemos, avec un S à la fin, et quand tu l'utilises, tu ne mets pas le S ..., de plus, certaines variables que tu utilisent dans la fonction ForwardMemo doivent être initialisés dans la section Declarations et non dans Initialize), ton script fonctionne parfaitement ... mais seulement pour les mails entrant de type Notes car pour les mails entrant Internet (SMTP) il ne forward pas le memo !Aurais-tu une idee de la cause ?De +, j'aimerais, dans l'algorythme, apres le forward vers la mail.box, supprimer le mail forwardé de la BAL. Penses-tu que cela soit faisable dans ta boucle While/Wend, et si oui, quelle fonction utiliser pour supprimer le document (j'avais pensé qu'à la place de CopyToDatabase, je pouvais utiliser CutToDatabase ou MoveToDatabase, mais ces fonctions n'existent pas d'apres l'aide en ligne...).Encore merci.

Re: script pour envoer un mail dont on choisit l'expediteur

MessagePublié: 19 Sep 2003 à 14:14
par Cedric
Ca, c'est la précipitation....En règle générale, la première chose que je mets dans un script est la ligne:option declareElle force la vérification que chaque variable utilisée est bien déclarée.Si ça avait été le cas, il aurait pété des erreurs...C'est faisable, la méthode pour supprimer est Remove, dans le NotesDocument.Mais là, il faut avoir recours à une astuce, car une fois le remove fait, le Set MailMemo = CollMemo.GetNextDocument( MailMemo )ne fonctionne plus, puisque le doc est suppriméIl faut donc avoir recours à une boucle du style: Dim Doc As NotesDocument Dim NextDoc As NotesDocument Set Doc = Coll.GetFirstDocument While Not Doc Is Nothing Set NextDoc = Coll.GetNextDocument(Doc) ' Traitement Doc.Remove true Set Doc = NextDoc Wend Concernant les mémos SMTP, je ne vois vraiment pas le pb... ils devraient être traités comme des mails, un point c tout.Faudrait déjà que tu vérifies que l'agent s'exécute tout de même, même s'il ne fait rien, ça serait déjà un début. Y a pas de raison !