Joindre un fichier et coller une image dans un mail en vba [Résolu/Fermé]

Signaler
Messages postés
12
Date d'inscription
mardi 2 juillet 2013
Statut
Membre
Dernière intervention
26 août 2015
-
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021
-
Bonjour,
Après plusieurs recherches et étant toujours coincé dans ma macro, je me tourne vers vous.

Je souhaiterai automatiser l'envoi d'un mail sous IBM Lotus Notes. Jusque là rien de bien compliqué, mon code ci-dessous fonctionne bien (il créer un format du mail en binaire).
 Dim envoyerA As String, envoyerCc As String, Subject As String
     
    ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
    envoyerA = "xxxx@xxx.xx"
    ' Indiquer ici le sujet de l'e-mail :
    Subject = "Test"
     
    Dim s As Object
    Dim docMail As Object
    Dim body As Object
    Dim stream As Object
    Dim att As Object
    
    Set s = CreateObject("Notes.NotesSession")
    Set Db = s.CurrentDatabase
    s.ConvertMIME = False
     
    'création du mail
    Set docMail = Db.CreateDocument
    With docMail
        .Form = "Memo"
        .SendTo = envoyerA
        .Subject = Subject
        .From = s.COMMONUSERNAME
    End With
     
    Set stream = s.CreateStream
    Set body = docMail.CreateMIMEEntity
    Call stream.writeText("Bonjour,<br /><br /> Blablabla")
    
    Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT)
         
    Call docMail.SEND(False)
    Set docMail = Nothing
    Set body = Nothing
    Set stream = Nothing


Je souhaiterai donc ajouter une image dans le corps du texte ainsi qu'y joindre un fichier excel.
J'ai fais plusieurs recherche sur internet mais je n'arrive pas à trouver le bon code...

Merci d'avance pour votre aide.

6 réponses

Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021
616
Bonjour,

Voici un exemple d'envoie avec 2 pièces jointes:
Image et classeur.

A adapter:

'Après avoir ajouté la référence "Microsoft CDO for Windows 2000 Library" dans l'éditeur VBA Outils- Références
Sub mail_en_direct()
Const cdoBasic = 1
Dim admail As String, i As Integer
Dim messmail As String, secours As String
Dim expediteur As String
Dim Fichier As Variant
Dim chemin As Variant
 
    Fichier = Application.GetOpenFilename("Fichiers Image (*.jpg), *.jpg")
    chemin = Application.GetOpenFilename("Classeurs Excel (*.xls), *.xls")
   
      expediteur = InputBox("Adresse mail de l'Expéditeur", "ADRESSE ELECTRONIQUE", "monadresse@mail.fr")
      admail = InputBox("Adresse mail du destinataire", "DESTINATAIRE", "adressedest@mail.fr")
      messmail = "Bonjour,"
   With CreateObject("CDO.Message")
   If Err Then
      secours = MsgBox("Problème de CDO non installé sur le serveur")
      Exit Sub
   Else
      .From = expediteur
      .To = admail 'destinataire
     '.Bcc = ""
      .Subject = "Bonjour"
      .TextBody = messmail
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = expediteur
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "ton passeport windows live mail"
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'attention mettre votre adresse messagerie
      .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
      .Configuration.Fields.Update
      .AddAttachment Fichier 'chemin image jointe
      .AddAttachment chemin  'chemin classeur joint
      .Send
      If Err Then MsgBox "Le message n'a pas pu être expédié.Fermez et réessayez."
   End If
   On Error GoTo 0
End With
 MsgBox "Message envoyé avec pièces jointes"
End Sub

Messages postés
12
Date d'inscription
mardi 2 juillet 2013
Statut
Membre
Dernière intervention
26 août 2015

Bonjour,

Merci pour votre réponse.

La macro bug sur le .Send. J'imagine que c'est à cause du serveur de messagerie que je n'arrive pas à trouver dans mon entreprise... Comment puis-je le trouver ?

De plus j'ai essayé d'adapter votre code au mien mais il ne marche pas non plus. Sauriez-vous pourquoi?

Dim envoyerA As String, envoyerCc As String, Subject As String

' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
envoyerA = "xxxx@xxx.xx"
' Indiquer ici le sujet de l'e-mail :
Subject = "Test"

Dim s As Object
Dim docMail As Object
Dim body As Object
Dim stream As Object
Dim att As Object

Set s = CreateObject("Notes.NotesSession")
Set Db = s.CurrentDatabase
s.ConvertMIME = False

'création du mail
Set docMail = Db.CreateDocument
With docMail
.Form = "Memo"
.SendTo = envoyerA
.Subject = Subject
.From = s.COMMONUSERNAME
End With

Set stream = s.CreateStream
Set body = docMail.CreateMIMEEntity
Call stream.writeText("Bonjour,<br /><br /> Blablabla")

Call body.AddAttachment("J:\maphoto.jpg") 'bug ici
Call body.AddAttachment("J:\mon fichier.xlsx")

Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT)

Call docMail.SEND(False)
Set docMail = Nothing
Set body = Nothing
Set stream = Nothing
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021
616
Voir cette ligne et corriger l'adresse messagerie

.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr" 'attention mettre votre adresse messagerie

Allez dans votre messagerie:
Comptes
Propriétés
Serveur
Courrier sortant(SMTP)

Je suis avec Windows Live Mail
Pour les entreprises, je ne sais pas!
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021
616
Avec ton code, essaie ceci:

Sub envoimail()
Dim envoyerA As String, envoyerCc As String, Subject As String 
 ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message : 
 envoyerA = "xxxx@xxx.xx" 
 ' Indiquer ici le sujet de l'e-mail : 
 Subject = "Test" 

 Dim s As Object 
 Dim docMail As Object 
 Dim body As Object 
 Dim stream As Object 
 Dim att As Object 
Dim Fichier As Variant
Dim chemin As Variant

 Set s = CreateObject("Notes.NotesSession") 
 Set Db = s.CurrentDatabase 
 s.ConvertMIME = False 

 
    Fichier = Application.GetOpenFilename("Fichiers Image (*.jpg), *.jpg")
    chemin = Application.GetOpenFilename("Classeurs Excel (*.xlsx), *.xlsx")
   
      expediteur = InputBox("Adresse 
 'création du mail 
 Set docMail = Db.CreateDocument 
 With docMail 
 .Form = "Memo" 
 .SendTo = envoyerA 
 .Subject = Subject 
 .From = s.COMMONUSERNAME 
 End With 

 Set stream = s.CreateStream 
 Set body = docMail.CreateMIMEEntity 
 Call stream.writeText("Bonjour,<br /><br /> Blablabla") 

Call body.AddAttachment Fichier 
Call body.AddAttachment chemin 
Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT) 

 Call docMail.SEND(False) 
 Set docMail = Nothing 
 Set body = Nothing 
 Set stream = Nothing
End Sub

Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021
616
Supprime cela, erreur de copier coller

expediteur = InputBox("Adresse
Messages postés
12
Date d'inscription
mardi 2 juillet 2013
Statut
Membre
Dernière intervention
26 août 2015

Bonjour,

Merci pour le retour.
Il y avait une erreur syntaxe dût aux parenthèses qu'il manquait. J'ai donc ces deux lignes.

Call body.AddAttachment(Fichier)
Call body.AddAttachment(chemin)

Malheureusement la macro bug sur les deux lignes...
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021
616
J'ai trouvé cette doc, avec fichiers joints, il suffit de l'adapter:

https://www.vbafin.com/Lotus-Notes-VBA-code.php
Messages postés
12
Date d'inscription
mardi 2 juillet 2013
Statut
Membre
Dernière intervention
26 août 2015

Merci bien pour la doc, ça a été très utile !

Voici le code actuel :

Dim envoyerA As String, envoyerCc As String, Subject As String

' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
envoyerA = "xxxx@xxx.xx"
' Indiquer ici le sujet de l'e-mail :
Subject = "Test"

Dim s As Object
Dim docMail As Object
Dim body As Object
Dim stream As Object
Dim att As Object

Set s = CreateObject("Notes.NotesSession")
Set Db = s.CurrentDatabase
s.ConvertMIME = False

'création du mail
Set docMail = Db.CreateDocument
With docMail
.Form = "Memo"
.SendTo = envoyerA
.Subject = Subject
.From = s.COMMONUSERNAME
End With

Set stream = s.CreateStream
Set body = docMail.CreateMIMEEntity
Call stream.writeText("Bonjour,<br /><br /> Blablabla")
Call body.SetContentFromText(stream, "text/html;charset=iso-8859-1", ENC_IDENTITY_8BIT)

Set AttachMe = docMail.CreateRichTextItem("C:\Desktop\monfichier.xlsx")
AttachMe.EmbedObject 1454, "", (""C:\Desktop\monfichier.xlsx"") ', "Attachment"

Call docMail.SEND(False)
Set docMail = Nothing
Set body = Nothing
Set stream = Nothing
Bonjour,

Dès que j'utilise ces codes, ils me mettent une erreur au niveau de "Set docMail = Db.CreateDocument " !
(erreur d'execution 91)

Est ce que quelqu'un sait comment résoudre ce problème ?

Merci
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021
616
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021
616
Erreur d'execution "91" signifie que l'objet n'est pas connecté/renseigné ... il est donc vide

Cela concerne ces 2 lignes:

Set s = CreateObject("Notes.NotesSession")
Set Db = s.CurrentDatabase

essaie d'ajouter dans les déclarations ceci:

Dim Db As Object
>
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021

Je viens de le faire et ça marche toujours pas
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021
616
Sur ce site, il dise qu'il y a un problème avec Lotus:

http://www.fabalou.com/VBandVBA/lotusnotesmail.asp
oui mais c'est pas tout à fait au même niveau que moi ...
Moi c'est presque tous les "set" qui ont un problème
Messages postés
7275
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
25 février 2021
616
N'ayant pas Lotus Notes, je ne peux donc pas essayer. Je pensais que BDLM ayant résolu son problème, cela aurait pu être de même pour toi.
Désolé, je ne peux pas faire plus
Bon courage