Envoyer un mail avec lotus notes 6 avec password

Soyez le premier à donner votre avis sur cette source.

Snippet vu 28 827 fois - Téléchargée 29 fois

Contenu du snippet

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.

A voir également

Ajouter un commentaire

Commentaires

malphodo
Messages postés
1
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
26 mars 2009
-
Bonjour,

Je viens de tester ce code qui semple bien fonctionner en session notes ouverte. Par contre dés que je le teste avec lotus notes fermé les mails se placent dans la boite "mail à envoyer" et ne partent qu'a l'ouverture de session suivante.
C'est un comportement normal ?
Pour infos c'est un test que j'ai fais avec le premier code que tu as posté.

Si vous aves des infos je suis preneur, j'utilise notes 6.5 sur XP et je cherche a envoyer des mails sans devoir lancer Notes avant mon prog VB

Merci ;-)
erazeur
Messages postés
3
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007
-
+ déclaration de la fonction dans le modul principal ... modifs vraiment mineures:

Option Compare Database
Function prvSendNotesMail(LotusPassWord As String, Subject As String, Attachment As String, Recipient As String, BodyText As String, SaveIt As Boolean) As Boolean
'LotusPassWord: Mot de passe Lotus Notes Domino de l'utilisateur courant

Dim Maildb As NotesDatabase
Dim UserName As String
Dim MailDoc As Object
Dim AttachME As 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
oSession.Initialize (LotusPassWord)
UserName = oSession.UserName
Set dbDirectory = oSession.GetDbDirectory("")
Set Maildb = dbDirectory.OpenMailDatabase

Set MailDoc = Maildb.CreateDocument()

MailDoc.AppendItemValue "Subject", Subject
MailDoc.AppendItemValue "SendTo", Recipient
MailDoc.AppendItemValue "Body", BodyText

If Attachment <> "" Then
Set AttachME = MailDoc.CreateRichTextItem("Attachment")
Set EmbedObj = AttachME.EmbedObject(1454, "", Attachment, "Attachment")
End If

If SaveIt = True Then
MailDoc.SaveMessageOnSend = SaveIt
End If

Call MailDoc.Send(False)

prvSendNotesMail = True
GoTo ExitHandle

ErrHandle:
MsgBox Err.Description
prvSendNotesMail = False

ExitHandle:
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set oSession = Nothing
Set dbDirectory = Nothing
Set EmbedObj = Nothing
End Function
erazeur
Messages postés
3
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007
-
Le code en question pour Access 2002 ... dans ce code je n'utilise pas de fichier joint, mais je l'ai bien évidement testé avec - et no problem -
Dans le cas ou il doit y en avoir un, il vous faudra juste donner la valeur appropriée à -FichierJoint-
Encore merci pour le code source de départ ;)

'*************************************************************************************
Private Sub SendMail_Click()
Dim MotDePasse As String
Dim SujetMessage As String
Dim FichierJoint As String
Dim Destinataire As String
Dim message As String

Dim db As DAO.Database
Dim rst As DAO.Recordset

MotDePasse = Me![LotusPassWord]
FichierJoint = ""

BoîteSuiviActionMailing.Visible = False
SuiviActionMailing.Visible = True
SuiviActionMailing.Value = ""

Set db = CurrentDb()
Set rst = db.OpenRecordset("ADM_VerifSaisies_PasOK_Tbl")
Compteur = 0
While Not rst.EOF
If Fix(Me![RefCptMois]) = Fix(rst![CptMois]) Then
Compteur = Compteur + 1
Destinataire = rst![mailcalc]
SujetMessage = "Merci de remplir correctement le RM du mois de " & Me![RefMoisTxt] & " (" & rst![Prenom] & " " & rst![Nom] & " )"
message = "Vous devez remplir le rapport mensuel de " & rst![Prenom] & " " & rst![Nom] & " ... actuellement il est incomplet, le total horaire affiche " & rst![SommeDeNbreHeure] & "h. Le total horaire du mois de " & Me![RefMoisTxt] & " est de " & rst![HOcorrigees] & "h ouvrées. Merci de faire le nécessaire le compléter."
Call prvSendNotesMail(MotDePasse, SujetMessage, FichierJoint, Destinataire, message, 1)
SuiviActionMailing.Value = SuiviActionMailing & " ; " & rst![mailcalc] & " (concerant " & rst![Prenom] & " " & rst![Nom] & ")"
End If
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Set db = Nothing

'BoîteSuiviActionMailing.Visible = False
'SuiviActionMailing.Visible = False
Me![RappelLabel].Visible = True

End Sub
'*************************************************************************************
erazeur
Messages postés
3
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
24 juillet 2007
-
Très bonne source bien commentée que j'ai intégré
... après modifs ... au code VBA dans une appli MS Access 2002 ( et version Lotus 6.5.5 pour info )
Lyly38
Messages postés
1
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
25 avril 2007
-
RegisP
La différence entre la version 6.5 de Lotus Notes et la 6 c'est que tu ne dois pas mettre ta pièce jointe entre guillemets
Version 6 : SendNotesMail("aa", "\\...\...\monfichier.txt", etc)
Version 6.5 : SendNotesMail("aa", \\...\...\monfichier.txt, etc)

Moi aussi j'ai une question
Comment fait-on pour modifier la propriété texte du mail?

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.