Bonjour,
je sais qu'il y a pas mal de code sur Lotus, cependant, aucun n'a réellement fonctionner sur mon PC, car la plupart des codes présent sur vbfrance ne fonctionne pas du tout sur la version 6, car le composant a bien changé depuis la V4...
J'ai donc été à la peche aux infos sur des sites sur lotus, et j'ai pu recréé le code d'envoi de mail, qui gère également l'injection du mot de passe (et évite donc l'apparition de la boite de dialogue de mot de passe). j'ai également pioché quelques variables certaines sources sur vbfrance.
Cela marche impeccablement sur mon Lotus Notes 6, mais il semble que cela fonctionne sur toutes les versions supérieures à la 5.0.2, mais je n'ai pas confirmation....
J'espère que cela vous aidera ;)
Je l'ai mis sous forme de fonction
//TRES IMPORTANT: il faut faire un regsrv de la Dll de Notes qui n'est pas forcément identifié par VB
(ex: DEMARRER > EXECUTER puis "regsrv32 C:\progra~1\Lotus\Notes\nlsxbe.dll" (modifier en fonction du chemin de votre lotus)
Source / Exemple :
'//TRES IMPORTANT: il faut faire un regsrv de la Dll de Notes qui n'est pas forcément identifié par VB
'(ex: DEMARRER > EXECUTER puis "regsrv32 C:\progra~1\Lotus\Notes\nlsxbe.dll" (modifier en fonction du chemin de votre
'lotus)
'//AJOUTER LA REFERENCE SUIVANTE ("projet > reference"): LOTUS DOMINO OBJECTS (qui correspond à domobj.tbl)
'*************************************************************************************************************
Function prvSendNotesMail(Subject As String, Attachment As String, Recipient As String, BodyText As String, SaveIt As Boolean) As Boolean
'*********************************************
'Repris et développé par EvilGost
'Subject: Sujet du mail / Attachment: Chemin complet du fichier à attacher (ex: "C:\test.txt"), sinon, mettre "" /
'Recipient: Destinataire (ex: "jeanlouis@wanadoo.fr") / Bodytext: Texte du mail / SaveIt: sauvegarde du mail dans les courriers envoyés
'*************************************************************************************************************
'Set up the objects required for Automation into lotus notes
Dim Maildb As NotesDatabase 'The mail database
Dim UserName As String 'The current users notes name
Dim MailDoc As Object 'The mail document itself
Dim AttachME As Object 'The attachment richtextfile object
Dim oSession As NotesSession
Dim dbDirectory As NotesDbDirectory
Dim EmbedObj As Object 'The embedded object (Attachment)
On Error GoTo ErrHandle
Set oSession = New NotesSession
'Démarre une session de notes
'La ligne suivante ne marche qu'avec les versions 5.x et 6.x , c'est l'injection du mot de passe
oSession.Initialize ("Mot de passe")
'Récupère le nom par défaut de la session
UserName = oSession.UserName
'Ouvre la base mail en utilisant le serveur par défaut
Set dbDirectory = oSession.GetDbDirectory("") 'vous pouvez mettre l'adresse du serveur dans ces parentheses
Set Maildb = dbDirectory.OpenMailDatabase
'Création du formulaire d'envoi de mail
Set MailDoc = Maildb.CreateDocument()
MailDoc.AppendItemValue "Subject", Subject 'remplissage du Sujet
MailDoc.AppendItemValue "SendTo", Recipient 'si vous passer un tableau de string() en paramètre, vous pouvez mettre plusieurs destinataire (ex: Recipient(2))
MailDoc.AppendItemValue "Body", BodyText 'Corps du mail
'Permet d'attacher un document au mail
If Attachment <> "" Then
Set AttachME = MailDoc.CreateRichTextItem("Attachment")
Set EmbedObj = AttachME.EmbedObject(1454, "", Attachment, "Attachment")
End If
'Envoi le document
If SaveIt = True Then
MailDoc.SaveMessageOnSend = SaveIt 'si à True, Lotus sauvegarde le mail envoyé
End If
Call MailDoc.Send(False) 'j'obtiens une erreur lorsque je mets true au lieu de false, si quelqu'un sait pourquoi
prvSendNotesMail = True
GoTo ExitHandle
ErrHandle:
Msgbox Err.Description
prvSendNotesMail = false
ExitHandle:
'Vidage mémoire
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set oSession = Nothing
Set dbDirectory = Nothing
Set EmbedObj = Nothing
End Function
Conclusion :
Je rappelle donc que vous pouvez modifier la fonction pour passer un tableau de String comment paramètre pour le Recipient, afin d'avoir plusieurs destinataires
On peut également boucler sur le contenu du IF d'attachement pour attacher plusieurs documents.
A savoir également que j'ai mis: Call MailDoc.Send(False) parce que lorsque je mets true, ca plante, je ne sais pas trop pourquoi, si jamais quelqu'un le sait.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.