none
outlook - Mail html avec image dans le corps du texte. RRS feed

  • Question

  • Bonjour, 

    J'ai un mail type comprenant une image, crée sur word et enregistré au format HTML. Le mail se charge sauf l'image j'ai une croix rouge à la place. J'ai essayé de modifié les paramètre de content ID mais cela ne fonctionne pas. J'ai à la fois la croix rouge et l'image.

    Sub magictest() Dim oFSO Dim oFS Dim colAttach As Outlook.Attachments Dim oAttach As Outlook.Attachment Dim oPA As Outlook.PropertyAccessor Dim oMail As Outlook.MailItem Dim myolApp As Outlook.Application Dim myNamespace As Outlook.NameSpace Set myolApp = CreateObject("Outlook.Application") Set myNamespace = myolApp.GetNamespace("MAPI") Const PR_ATTACH_MIME_TAG = "http://schemas.microsoft.com/mapi/proptag/0x370E001E" Const PR_ATTACH_CONTENT_ID = "http://schemas.microsoft.com/mapi/proptag/0x3712001E" Const PR_HIDE_ATTACH = "http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/8514000B" If Application.ActiveExplorer.Selection.Count Then If TypeOf Application.ActiveExplorer.Selection(1) Is Outlook.MailItem Then Set oMail = Application.ActiveExplorer.Selection(1).Reply Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFS = oFSO.OpenTextFile("C:\Users\PC\Desktop\ATC\C-validation CAP CG44.htm") Set colAttach = oMail.Attachments Set oAttach = colAttach.Add("C:\Users\PC\Desktop\ATC\C-validation CAP CG44_files\image001.jpg") Set oPA = oAttach.PropertyAccessor oPA.SetProperty PR_ATTACH_MIME_TAG, "image/jpeg" oPA.SetProperty PR_ATTACH_CONTENT_ID, "logo" stext = ofs.Readall

    oMail.bodyformat = olformathtml oMail.HTMLBody = "<img border=0 hspace=0 alt='' align=baseline src=\'cid:logo/>" & stext & vbCr & oMail.HTMLBody oMail.Display End If End If End Sub

    Merci pour votre aide.


    • Modifié MikeLee75 mardi 4 février 2014 14:20
    mardi 4 février 2014 08:36

Réponses

Toutes les réponses

  • Bonjour

    Veuillez  regarder ce thread:

    http://vba-useful.blogspot.fr/2014/01/send-html-email-with-embedded-images.html

    Cordialement, 


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    mardi 4 février 2014 12:39
  • Bonjour,

    Je n'ai pas trouvé ce que je cherchai via votre lien,

    J'ai cherché ici en vain.

    mardi 4 février 2014 13:44
  • Quel est le comportement?
    Il affiche une  image?
    Vous ouvrez le fichier texte mais vous n’utilisez pas son contenu :
    Set oFS = oFSO.OpenTextFile("C:\Users\PC\Desktop\ATC\C-validation CAP CG44.htm")
       
    Cordialement,

    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 4 février 2014 14:00
  • J'ai corrigé mon code j'avai oublié 

    stext = oFS.ReadAll
    oMail.BodyFormat = olFormatHTML

    J'obtiens l'image en haut a gauche, et en dessous j'ai le carré rouge de l'image présente dans le doc word en html. Je ne parviens pas à lui faire afficher l'image à la place de la croix rouge, la référence ne se fait pas.

    Par ailleurs, l'image n'est pas mise en pièce jointe.

    mardi 4 février 2014 14:26
  • Vous ajoutez au debout de  l'email: "<img border=0 hspace=0 alt='' align=baseline src=\'cid:logo/>".

    En place d’ajouter cette ligne je dirais que dans le fichier HTML que vous utilisez pour charger l’email, mettre  exactement cette construction en place de votre image.
    L’image ne sera plus visible dans l’explorateur, mais sera affichée correctement dans l’email.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 4 février 2014 14:40
  • Je n'y arrive vraiment pas, navré.

    mardi 4 février 2014 21:11
  • Pouvez-vous nous montrer le fichier HTML et la version finale de votre code?

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    • Modifié Aurel Bera mercredi 5 février 2014 13:52
    mercredi 5 février 2014 13:35
  • Voici mon code final :

    Const PR_ATTACH_MIME_TAG = "http://schemas.microsoft.com/mapi/proptag/0x370E001E"
    Const PR_ATTACH_CONTENT_ID = "http://schemas.microsoft.com/mapi/proptag/0x3712001E"
    Const PR_HIDE_ATTACH = "http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/8514000B"
    Sub magictest()
        Dim oFSO
        Dim oFS
        Dim colAttach As Outlook.Attachments
        Dim oAttach As Outlook.Attachment
        Dim oPA As Outlook.PropertyAccessor
        Dim oMail As Outlook.MailItem
        Dim myolApp As Outlook.Application
        Dim myNamespace As Outlook.NameSpace
        Set myolApp = CreateObject("Outlook.Application")
        Set myNamespace = myolApp.GetNamespace("MAPI")
      
        If Application.ActiveExplorer.Selection.Count Then
        If TypeOf Application.ActiveExplorer.Selection(1) Is Outlook.MailItem Then
        Set oMail = Application.ActiveExplorer.Selection(1).Reply
         
        Set oFSO = CreateObject("Scripting.FileSystemObject")
         
        Set oFS = oFSO.OpenTextFile("C:\Users\PC\Desktop\ATC\test.htm")
        
    
        
    
            Set colAttach = oMail.Attachments
            Set oAttach = colAttach.Add("C:\Users\PC\Desktop\ATC\test\image001.jpg", missing, missing, missing)
        
            stext = oFS.ReadAll
            oMail.BodyFormat = olFormatHTML
            Set oPA = oAttach.PropertyAccessor
            oPA.SetProperty PR_ATTACH_MIME_TAG, "image/jpeg"
            oPA.SetProperty PR_ATTACH_CONTENT_ID, "logo"
     
            oMail.HTMLBody = "<IMG align=baseline border=0 hspace=0 src=cid:logo>" & stext & vbCr & oMail.HTMLBody
            oMail.Display
        End If
       End If
    End Sub
    
    et ci dessous les captures écran du fichier wordl enregistré au format HTML


    mercredi 5 février 2014 20:20
  • Bonjour

    Si vous vous ouvrez le fichier .HTML avec Notepad vous allez voir que c’est format texte.
    Ici vous allez trouver quelque chose de type <img ….. originalsrc="nom" _fichier />.
    Ma proposition c’est de faire :
            oMail.HTMLBody = replace(stext, “nom_fichier”, "cid:logo")

    Comme ça vous remplacez le nom et le chemin vers l’image (qui n’est pas reconnu par Outlook ) avec cid :logo (qui est reconnu par Outlook).

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.



    • Modifié Aurel Bera jeudi 6 février 2014 11:20
    • Marqué comme réponse MikeLee75 jeudi 6 février 2014 13:38
    jeudi 6 février 2014 11:17
  • Bravo !!!

    Mille merci! dans l’hypothèse ou le document présente plusieurs images j'ai rajouté :

            Set colAttach = oMail.Attachments
            Set oAttach = colAttach.Add("C:\User\Desktop\ATC\test_fichiers\image001.jpg", missing, missing, missing)
     
            Set oAttach1 = colAttach.Add("C:\Users\Desktop\ATC\test_fichiers\image003.jpg", missing, missing, missing)
        
            stext = oFS.ReadAll
            oMail.BodyFormat = olFormatHTML
            Set oPA = oAttach.PropertyAccessor
            oPA.SetProperty PR_ATTACH_MIME_TAG, "image/jpeg"
            oPA.SetProperty PR_ATTACH_CONTENT_ID, "logo"
       Set oPA1 = oAttach1.PropertyAccessor
            oPA1.SetProperty PR_ATTACH_MIME_TAG, "image/jpeg"
            oPA1.SetProperty PR_ATTACH_CONTENT_ID, "logo1"

    Mais que dois je rajouter au niveau du oMail.HTMLBody ?

    cordialement et merci pour votre aide !


    jeudi 6 février 2014 13:36
  • Dans ce cas sera:

    oMail.HTMLBody = replace(replace(stext, "nom_fichier", "cid:logo"), "nom_fichier2", "cid:logo1")

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse MikeLee75 jeudi 6 février 2014 14:10
    jeudi 6 février 2014 13:53
  • Merci et encore bravo !
    jeudi 6 février 2014 14:10