Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VBA] Envoi d'un e-mail HTML via Lotus Notes

Dans Excel 2007

Sujet résolu
Anonyme
    23 janvier 2014 à 11:35:39

    Bonjour,

    Je cherche à envoyer des e-mails en HTML via Lotus Notes en utilisant une macro Excel, mais je n'y arrive pas, quelqu'un pourrait m'aider ?
    Actuellement, je parviens simplement à envoyer un e-mail sans mise en forme. J'ai tenté de mettre du code HTML directement dans le message, mais sans succès.

    Voici le code actuel :

    Sub sendMail()
        Dim envoyerA As String, envoyerCc As String
        
        ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
        envoyerA = "lemaildudestinataire@fautvraimentetreconpouravoiruneadresseinternetaussilongue.com/"
        ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message en copie carbone (Cc) :
        envoyerCc = ""
    
        Dim Session As Object
        Dim mimeMail As Object
        Dim nchild As Object
        Dim db As Object
        Dim doc As Object
        Set Session = CreateObject("Notes.NotesSession")
        Set db = Session.GETDATABASE("", "")
        Call db.OPENMAIL
            
        Set doc = db.CREATEDOCUMENT()
        
        With doc
            .form = "Memo"
            .SendTo = envoyerA
            .CopyTo = envoyerCc
            .Subject = "E-mail de la mort dui tue !"
            .body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula interdum velit pellentesque tincidunt. Nullam sit amet orci sollicitudin, pretium ipsum vehicula, bibendum magna. Sed iaculis vulputate convallis. Curabitur sed feugiat quam, et venenatis sem. Sed porttitor ligula leo, vitae scelerisque nisl rhoncus ac. Mauris non feugiat nulla. Suspendisse pharetra tempor nunc sed congue. Suspendisse sed lacinia justo, ut tristique dui." &vbNewLine ' Au passage, le vbNewLine semble ne pas fonctionner
            .body = body + "Maecenas id dolor nisl. Nullam ut ipsum elementum, feugiat sapien ac, commodo tortor. Pellentesque interdum et sem non aliquet. Suspendisse consequat quam sit amet sem convallis, ac tincidunt lacus dignissim. Quisque urna ipsum, porta et porttitor vitae, iaculis vel nunc. Duis cursus ipsum id leo consequat, eu malesuada felis pharetra. Nunc quis tempor mi. Etiam adipiscing odio ac posuere commodo. Donec bibendum posuere nunc, sit amet fermentum purus convallis in. Ut eu nibh diam. Vivamus vitae dictum urna, ut lacinia lacus. Aliquam ac odio vel nulla ullamcorper sollicitudin in eu mauris. Suspendisse egestas aliquam lectus a scelerisque. Praesent at ligula odio. Nunc vitae gravida ante, eget aliquet elit. Aliquam ultricies purus dolor, vel consectetur leo accumsan scelerisque."
            .From = Session.COMMONUSERNAME
            .PostedDate = Now
            .SAVEMESSAGEONSEND = True
        End With
        
        Call doc.SEND(False)
        
        Set Session = Nothing
        Set db = Nothing
        Set doc = Nothing
        
        MsgBox "Mail envoyé"
    End Sub

    J'ai cherché un peu partout sur le Net, sans trouver mon bonheur (de plus, je ne suis pas très à l'aise avec VBA ^^ )

    Que dois-je faire ?

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      23 janvier 2014 à 11:46:39

      Bonjour,

      As tu essayer de regarder avec la fonction .htmlbody ?

      http://msdn.microsoft.com/en-us/library/office/aa171418(v=office.11).aspx

      Edit : Ca ne marche peut être que pour outlook

      -
      Edité par Yru4ma 23 janvier 2014 à 11:48:35

      • Partager sur Facebook
      • Partager sur Twitter
      "J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends."
      Anonyme
        23 janvier 2014 à 13:20:54

        D'accord, merci pour les réponses.

        Angelo a écrit:

        Salut
        Essaie avec NotesMIMEEntity

        exemple ici : http://stackoverflow.com/questions/686384/sending-formatted-lotus-notes-rich-text-email-from-excel-vba


        Je viens d'essayer le code que tu m'as donné (copier-coller avec petite adaptation pour les adresses e-mail), mais lorsque j'exécute j'ai une erreur d'exécution : "Type défini par l'utilisateur non défini" pour la classe NotesSession.

        Voici mon code (l'erreur se trouve à la ligne 9) :

        Sub sendMail2()
            Dim envoyerA As String, envoyerCc As String
            
            ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
            envoyerA = "mail@domaine.com"
            ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message en copie carbone (Cc) :
            envoyerCc = ""
            
            Set s = New NotesSession ' <<<<<<<< L'erreur a lieu sur cette ligne
            Dim docMail As NotesDocument
            Dim body As NotesMIMEEntity
            Dim stream As NotesStream
            Dim session As Object
            
            Set session = CreateObject("Notes.NotesSession")
            
            Set db = s.CurrentDatabase
            s.ConvertMIME = False ' Do not convert MIME to rich text
            
            'Create email to be sent
            Set docMail = db.CreateDocument
            
            With docMail
                .Form = "Memo"
                .SendTo = envoyerA
                .copyTo = envoyerCc
                .Subject = "Test"
                .From = session.COMMONUSERNAME
        
                ' La ligne suivante est commentée car je ne sais pas à quoi elle correspond
                '.Principal = FROM ADDRESS
        
                .ReplyTo = session.COMMONUSERNAME
            End With
            
            Set stream = s.CreateStream
            Set body = docMail.CreateMIMEEntity
            Call stream.WriteText("YOUR HTML CODE GOES HERE")
            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

        Aurais-je loupé quelque chose ? :-°

        • Partager sur Facebook
        • Partager sur Twitter
          23 janvier 2014 à 13:40:35

          Essaye de remplacer ta ligne par les lignes suivantes :

          Dim s as New NotesSession
          Set s = CreateObject ("Lotus.NotesSession")
          

          -
          Edité par Yru4ma 23 janvier 2014 à 13:43:09

          • Partager sur Facebook
          • Partager sur Twitter
          "J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends."
          Anonyme
            23 janvier 2014 à 13:46:36

            OK, ça a fonctionné avec ton code, que j'ai légèrement changé en :

                Dim s As Object
                Set s = CreateObject("Lotus.NotesSession")


            Il y a d'autres erreurs dus au même problème (classe inexistante), je vais m'inspirer du code ci-dessus pour le résoudre.

            Merci pour les réponses (je garde le sujet ouvert au cas où j'aurais d'autres soucis) ;)

            • Partager sur Facebook
            • Partager sur Twitter
              23 janvier 2014 à 13:54:20

              Jérôme Deuchnord a écrit:

              OK, ça a fonctionné avec ton code, que j'ai légèrement changé en :

                  Dim s As Object
                  Set s = CreateObject("Lotus.NotesSession")


              Il y a d'autres erreurs dus au même problème (classe inexistante), je vais m'inspirer du code ci-dessus pour le résoudre.

              Merci pour les réponses (je garde le sujet ouvert au cas où j'aurais d'autres soucis) ;)



              Sinon t'as peut être un problème de référence non coché sur ton projet.

              Edit : Il y a une référence "Lotus Notes Automation Classes", essaye en la cochant

              -
              Edité par Yru4ma 23 janvier 2014 à 13:57:00

              • Partager sur Facebook
              • Partager sur Twitter
              "J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends."
              Anonyme
                23 janvier 2014 à 14:00:17

                Je viens de faire les modifications et j'ai maintenant le morceau de code suivant :

                    Dim s As Object
                    Set s = CreateObject("Lotus.NotesSession")
                    Dim docMail As Object
                    Set docMail = CreateObject("Lotus.NotesDocument")
                    Dim body As Object
                    Set body = CreateObject("Lotus.NotesMIMEEntity")
                    Dim stream As Object
                    Set stream = CreateObject("Lotus.NotesStream")
                    Dim session As Object

                Mais ça semble bloquer à la ligne du CreateObject pour l'objet docMail, "Un composant ActiveX ne peut pas créer d'objet" :-/

                J'ai vérifié les références qui sont activées dans mon projet, mais tout ce qui concerne Lotus est coché.

                Une idée ?

                • Partager sur Facebook
                • Partager sur Twitter
                  23 janvier 2014 à 15:07:23

                  T'auras peut être des pistes ici : https://support.microsoft.com/kb/244264/fr

                  • Partager sur Facebook
                  • Partager sur Twitter
                  "J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends."
                  Anonyme
                    23 janvier 2014 à 15:36:21

                    Ah oui donc en fait ma macro risque de pas fonctionner partout... o_O

                    Embêtant ça, car ma macro est destinée à être déployée sur une centaine de PC :o

                    EDIT : je viens de trouver finalement l'erreur, elle était tout simplement due au fait qu'il y avait des classes qui n'existaient pas !

                    Le code suivant a fonctionné :

                    Sub sendMail2()
                        Dim envoyerA As String, envoyerCc As String, Subject As String
                        
                        ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message :
                        envoyerA = "uneadressem@il.com"
                        ' Indiquer ici l'adresse mail à laquelle il faut envoyer le message en copie carbone (Cc) :
                        envoyerCc = ""
                        ' 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
                        Set s = CreateObject("Notes.NotesSession")
                        
                        Set db = s.CurrentDatabase
                        s.ConvertMIME = False ' Do not convert MIME to rich text
                        
                        'Create email to be sent
                        Set docMail = db.CreateDocument
                        
                        With docMail
                            .Form = "Memo"
                            .SendTo = envoyerA
                            .copyTo = envoyerCc
                            .Subject = Subject
                            .From = s.COMMONUSERNAME
                            .ReplyTo = s.COMMONUSERNAME
                            '.Principal = FROM ADDRESS
                        End With
                        
                          Set stream = s.CreateStream
                        Set body = docMail.CreateMIMEEntity
                        Call stream.WriteText("<h1>Hello, World!</h1><ul><li>Une</li><li>Liste</li><li>À</li><li>Puce</li></ul>")
                        
                        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
                        
                        MsgBox "Message envoyé"
                    End Sub


                    Merci pour l'aide apportée :)

                    -
                    Edité par Anonyme 23 janvier 2014 à 15:57:17

                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 janvier 2014 à 16:02:23

                      Ah nickel, merci d'avoir mis le code qui fonctionne finalement. Bonne chance pour la suite du projet.

                      Edit : Dernier point, si tu as encore besoin d'aide en VBA, poste plutôt dans le forum "Autres langages" ;)

                      -
                      Edité par Yru4ma 23 janvier 2014 à 16:03:36

                      • Partager sur Facebook
                      • Partager sur Twitter
                      "J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends."
                      Anonyme
                        23 janvier 2014 à 16:55:16

                        D'accord, pas de soucis, j'avais posté dans celui-ci vu que le VBA est dérivé du VB.Net, mais c'est vrai qu'il aurait plus sa place dans la section Autres langages ^^

                        Bonne soirée à toi !

                        -
                        Edité par Anonyme 24 janvier 2014 à 10:59:07

                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 janvier 2014 à 10:53:01

                          Déplacé dans le forum autre langage à la demande de l'auteur du topic.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 mars 2016 à 17:18:05

                            Bonjour. J'aimerais savoir comment envoyer a plusieurs personnes destinataires du même mail. Avec plusieurs personnes en copie?

                            Merci beaucoup

                            • Partager sur Facebook
                            • Partager sur Twitter

                            [VBA] Envoi d'un e-mail HTML via Lotus Notes

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown