Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ENVOYER DES MAILS VIA LOTUS NOTES


Information sur la source

Catégorie :VBA Niveau : Expert Date de création : 14/01/2003 Date de mise à jour : 14/01/2003 12:51:38 Vu : 13 543

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (29)
Ajouter un commentaire et/ou une note

Description

Ce code permet d'envoyer des mails via ACCESS en utilisant la messagerie LOTUS NOTES.
Ce code permet aussi d'envoyer des fichiers joints.

 

Source

  • 'Public Sub SendNotesMail(Subject as string, attachment as string,
  • 'recipient as string, bodytext as string,saveit as Boolean)
  • 'This public sub will send a mail and attachment if neccessary to the
  • 'recipient including the body text.
  • 'Requires that notes client is installed on the system.
  • Public Sub SendNotesMail(Subject As String, Attachment As String, Recipient As String, BodyText As String, SaveIt As Boolean)
  • 'Set up the objects required for Automation into lotus notes
  • Dim Maildb As Object 'The mail database
  • Dim UserName As String 'The current users notes name
  • Dim MailDbName As String 'THe current users notes mail database name
  • Dim MailDoc As Object 'The mail document itself
  • Dim AttachME As Object 'The attachment richtextfile object
  • Dim Session As Object 'The notes session
  • Dim EmbedObj As Object 'The embedded object (Attachment)
  • 'Start a session to notes
  • Set Session = CreateObject("Notes.NotesSession")
  • 'Get the sessions username and then calculate the mail file name
  • 'You may or may not need this as for MailDBname with some systems you
  • 'can pass an empty string
  • UserName = Session.UserName
  • MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
  • 'Open the mail database in notes
  • Set Maildb = Session.GETDATABASE("", MailDbName)
  • If Maildb.ISOPEN = True Then
  • 'Already open for mail
  • Else
  • Maildb.OPENMAIL
  • End If
  • 'Set up the new mail document
  • Set MailDoc = Maildb.CREATEDOCUMENT
  • MailDoc.Form = "Memo"
  • MailDoc.sendto = Recipient
  • MailDoc.Subject = Subject
  • MailDoc.Body = BodyText
  • MailDoc.SAVEMESSAGEONSEND = SaveIt
  • 'Set up the embedded object and attachment and attach it
  • If Attachment <> "" Then
  • Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
  • Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
  • MailDoc.CREATERICHTEXTITEM ("Attachment")
  • End If
  • 'Send the document
  • MailDoc.PostedDate=Now() 'Gets the mail to appear in the sent items folder
  • MailDoc.SEND 0, Recipient
  • 'Clean Up
  • Set Maildb = Nothing
  • Set MailDoc = Nothing
  • Set AttachME = Nothing
  • Set Session = Nothing
  • Set EmbedObj = Nothing
  • End Sub
'Public Sub SendNotesMail(Subject as string, attachment as string,
'recipient as string, bodytext as string,saveit as Boolean)
'This public sub will send a mail and attachment if neccessary to the
'recipient including the body text.
'Requires that notes client is installed on the system.

Public Sub SendNotesMail(Subject As String, Attachment As String, Recipient As String, BodyText As String, SaveIt As Boolean)
'Set up the objects required for Automation into lotus notes
    Dim Maildb As Object 'The mail database
    Dim UserName As String 'The current users notes name
    Dim MailDbName As String 'THe current users notes mail database name
    Dim MailDoc As Object 'The mail document itself
    Dim AttachME As Object 'The attachment richtextfile object
    Dim Session As Object 'The notes session
    Dim EmbedObj As Object 'The embedded object (Attachment)
    'Start a session to notes
    Set Session = CreateObject("Notes.NotesSession")
    'Get the sessions username and then calculate the mail file name
    'You may or may not need this as for MailDBname with some systems you
    'can pass an empty string
    UserName = Session.UserName
    MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
    'Open the mail database in notes
    Set Maildb = Session.GETDATABASE("", MailDbName)
     If Maildb.ISOPEN = True Then
          'Already open for mail
     Else
         Maildb.OPENMAIL
     End If
    'Set up the new mail document
    Set MailDoc = Maildb.CREATEDOCUMENT
    MailDoc.Form = "Memo"
    MailDoc.sendto = Recipient
    MailDoc.Subject = Subject
    MailDoc.Body = BodyText
    MailDoc.SAVEMESSAGEONSEND = SaveIt
    'Set up the embedded object and attachment and attach it
    If Attachment <> "" Then
        Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
        Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
        MailDoc.CREATERICHTEXTITEM ("Attachment")
    End If
    'Send the document
    MailDoc.PostedDate=Now() 'Gets the mail to appear in the sent items folder
    MailDoc.SEND 0, Recipient
    'Clean Up
    Set Maildb = Nothing
    Set MailDoc = Nothing
    Set AttachME = Nothing
    Set Session = Nothing
    Set EmbedObj = Nothing
End Sub

Commentaires et avis

signaler à un administrateur
Commentaire de IMX le 25/07/2003 14:31:36

Hello,
merci pour ce code, qui fonctionne également très bien sous Excel.
Peut-on envoyer à plusieurs destinataires en une fois ?

signaler à un administrateur
Commentaire de galldup le 04/12/2003 10:47:27

oui, en modifiant la variable recipient
par exemple : recipient = "toto@yahoo.fr,titi@yahoo.fr"

signaler à un administrateur
Commentaire de IMX le 04/12/2003 11:21:32

pour moi, ça ne marche pas. En revanche, j'ai vu sur un site (désolé je ne sais plus lequel) que l'on peut passer un tableau de variant:
Redim recipient (2)
recipient(0) = "toto@machin.fr"
recipient(1) = "tata@machin.fr"


SendNotesMail sujet, attachement, recipient, texte, False

Ca fonctionne avec excel 2000

signaler à un administrateur
Commentaire de jcalimero le 13/01/2004 12:31:22

Bonjour,

Merci pour ce code!
J'arrive à envoyer des mails.
Cependant le destinataire a un message d'erreur "Illegal circular USE : Core EmailClasses"
Quelqu'un a deja eu ce message?

Merci d'avance pour votre aide!!

signaler à un administrateur
Commentaire de arouche le 24/03/2004 18:20:39

Est il possible que le mail soit envoyer sans que Lotus notes ne s'ouvre ?

signaler à un administrateur
Commentaire de galldup le 25/03/2004 10:17:55

??

Ben oui, ce code est à coller dans ton application ACCESS ou EXCEL et puis le tour est joué.

signaler à un administrateur
Commentaire de tom_811 le 16/11/2006 04:17:34

Merci pour ce code.
Il est excellent, sous excel 2000, il fonctionne très bien!
Vraiment rien à dire...
Continue comme ça!!
10/10

signaler à un administrateur
Commentaire de butthead6511 le 04/01/2007 12:13:10

bonjour,
j'ai un problème avec l'envoie de pièce jointe,
erreur à la ligne: MailDoc.CREATERICHTEXTITEM ("Attachment")
pourtant dans l'appel j'ai:
SendNotesMail("aa", "\\...\...\monfichier.txt", etc)
une idée ? merci

signaler à un administrateur
Commentaire de butthead6511 le 04/01/2007 12:16:57

j'ai trouvé, c'est une érreur dans le source, il ne faut pas les guillemets:
MailDoc.CREATERICHTEXTITEM (Attachment)

signaler à un administrateur
Commentaire de RegisP le 16/03/2007 17:14:48

Merci pour l'info des guillemets sur Attachment, car cela m'a bien dépanné. Le code fonctionnait avec les "" avec Lotus 6, mais pas avec Lotus 6.5. En les enlevant, c'est impeccable!
10/10

signaler à un administrateur
Commentaire de Lahax le 25/04/2007 15:48:56

Oui moi aussi, j'étais sur une macro qui marchait avec lotus 6 et pas avec lotus 6.5, ce poste m'a sauvé la vie!

(sans exagération aucune).

Merci

signaler à un administrateur
Commentaire de heriquet le 19/06/2007 11:20:23

Bonjour,

Super code. Ca m'a bien aidé à automatiser une tâche (bien que j'aie écrit mon application en C#).

J'ai une question : avez-vous également le problème du corps de message qui s'écrit sur une seule ligne malgré les "\n" ?

Merci.

Heriquet

signaler à un administrateur
Commentaire de LaPoisse1 le 04/07/2007 10:40:32

je suis un petit debutant en VBA et j'ai du mal a me servir du programme: si je me souvient bien, ce programme est a declarer dans la partie module...
le problème survient quand j'essaie de faire appel a cette fonction... il me demande un "=" a la fin de ma ligne... et quand je met un truc après pour qu'il soit content il me dit qu'il manque un argument...
pourtant il reconnait bien la fonction puisqu'il m'affiche le type de données a mettre dans les parenthèses...

désolé d'être nul à ce point...

signaler à un administrateur
Commentaire de Renfield le 04/07/2007 10:57:52 administrateur CS

ne mets pas de parenthèse

SendMail xxx,xxx
et non
SendMail (xxx,xxx)


on met des parenthèses que si l'on récupère le resultat d'une fonction (ici c'est une procédure)

signaler à un administrateur
Commentaire de LaPoisse1 le 04/07/2007 11:31:31

ah! voila exactement le genre de réponse que je cherche depuis que j'ai commencé a programmer: une explication simple plustot que des remarques du type "faut-pas-faire comme-ca-c'est-moche"

alors ca semble fonctionner, il se lance bien dans la procédure,

MAIS, il me dit cela:
un composant activeX ne peut pas creer d'objet

et il me surligne cette ligne:
Set Session = CreateObject("Notes.NotesSession")
dans la procédure

(après c'est promis j'arrete d'etre lourd...)

signaler à un administrateur
Commentaire de Renfield le 04/07/2007 12:29:05 administrateur CS

possible aussi :
Call SendMail (xxx,xxx)


tu as bien Lotus Notes installé, sur ton poste ?

signaler à un administrateur
Commentaire de LaPoisse1 le 04/07/2007 12:57:59

oui! par contre je viens de voir que je ne pouvais pas le lancer... je vais voir a le configurer correctement ce sera sans doute mieux...

je vous redit... merci beaucoup!

signaler à un administrateur
Commentaire de heriquet le 04/07/2007 18:33:48

Bonjour,

Je vois que ca bouge sur ce topic. Je repose ma question : lorsque vous envoyez un message dont le body contient des retours à la ligne, est-ce que ces retours à la ligne sont bien visible dans l'email qui est recu ?

Moi quand je fais cela tout s'écrit sur une ligne... donc mon programme est pour le moment "à jeter" !

signaler à un administrateur
Commentaire de IMX le 05/07/2007 08:59:55

Bonjour,

Heriquet, je viens de tester en envoyant
"Ligne 1" & chr(10) & "Ligne 2" & chr(13) & "Ligne 3"
en body et sur mon lotus j'ai bien les 3 lignes avec deux "passages à la ligne".
Je ne vois pas d'où ça peut venir. Peut-être que ton lotus est configuré pour afficher les message en format HTML, dans ce cas, tu peux essayer d'insérer "<BR>" dans ton body pour aller à la ligne ?! (je dis ça sans avoir testé)
Bon courage.

signaler à un administrateur
Commentaire de FOUNI le 08/07/2007 21:02:24

bonjour a tous , le code est super , cependant , je possède deux possibilité d'envoi sur mon lotus , soit par ma boite à  mon nom , soit par une boite commune ex toto


quand j'execute la macro , le mail par avec mon nom ; et j'aimerai que le mail parte avec la boite commune  , où dois-je modifier la macro et comment surtout ,

la ligne de code  est la suivante

  MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"

Set Maildb = Session.GETDATABASE("", MailDbName)


même si je modifie mon .nsf , avec la bonne adresse de boite, cela ne change rien , on dira que les paramètre se place par défaut , ou vous chercher les infos ailleur?


  merci pour l'aide

signaler à un administrateur
Commentaire de heriquet le 08/07/2007 21:39:45

Regarde la ligne juste au dessus. On prend le username. Apparement dans ce cas ci le nom de la DN était standard.

A ta place je fais une condition qui prend le user name par défaut et sinon le nom de ta DB commune. Il faut que le user choisisse s'il envoit avec sa boite, ou avec ta DB commune.

Essaie ca et donne un retour stp.

Bon travail !

signaler à un administrateur
Commentaire de FOUNI le 09/07/2007 19:20:11

merci pour avoir répondu si vite , mais je suis peut être idio , que veut dire DN ET DB? créer une condition ok mais  j'avoue que je suis un peu perdu , à force d'essayer plein de chose , je bloque

j'ai effectivement  modifié  l' username en indiquant la bonne adresse , mais le Set Maildb = Session.GETDATABASE("", MailDbName)
, ne tient pas compte de ma modif et le mail par avec la boite a mon nom

comment ?,je ne sais pas c'est comme si il y  avait Set Maildb = Session.GETDATABASE("", "")

j'espère que vous me comprenez

merci

signaler à un administrateur
Commentaire de FOUNI le 09/07/2007 20:47:31

BONSOIR,

encore moi , désolé , j'ai oublié de vous demander comment faire pour que   la macro excel exécute le mot de passe que le lotus une fois ouvert me demande, j'essaye de suivre mais mon niveau est faible par rapport au code déjà donné


merci ,je vous tiendrais au courant si je trouve

signaler à un administrateur
Commentaire de heriquet le 09/07/2007 21:01:49

Salut,

DN est une faute de frappe... je voulais érire DB => database.

Tu dois mettre le mot de passe dans le code de la meme facon que tu met le nom de la base de donnée. En VB je ne sais pas car moi j'ai repris le code et traduit en C#.

signaler à un administrateur
Commentaire de FOUNI le 09/07/2007 21:14:20

MERCI ,HERIQUET , je vais creuser

bonsoir

signaler à un administrateur
Commentaire de ikki78 le 12/07/2007 17:24:19

Bonjour.

Le code marche super mais l'envoi à plusieurs personne ne marche pas bien : destinataires séparés par "," et seule la première reçois le mail.

Comment régler ce problème ?

Merci

signaler à un administrateur
Commentaire de IMX le 13/07/2007 08:31:06

Salut IKKI78,

regarde le troisième commentaire de la source, tu trouveras ta réponse.

signaler à un administrateur
Commentaire de ikki78 le 13/07/2007 10:16:14

Merci pour ta réponse IMX,

mais ce qu'il faut préciser c'est qu'a priori il faut passer un tableau de String() et nom une liste de nom séparés par une ",".

Voilà

signaler à un administrateur
Commentaire de stephver le 31/01/2008 21:57:34

Bonjour,

J'ai un petit probléme je parvient à envoyer un email a partir d'excel mais je n'arrive pas à créer un Hotspot. Ce que je veux dire ces que mon hotspot dans l'email que j'evois doit être ex <<link to ticket>> et non le path du lien


Merci de m'aider

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,016 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.