Immagine body email senza utilizzare Outlook per invio mail

di zio Ken il
11 risposte
Salve a tutti, espongo questo nuovo quesito che mi balenava nella mente...
facendo seguito a questo 3d aperto sempre da me
https://www.iprogrammatori.it/forum-programmazione/access/inoltro-massivo-mail-con-allegato-report-origine-dati-query-maschera-t34587.html
mi chiedevo se fosse possibile inserire, all'interno del body della mail, un immagine caricata ma non come allegato...ad esempio, per rendermi più chiaro, dopo aver caricato un logo (path in una tabella) fare in maniera tale che quell'immagine compaia anche nella mail.

Ho scritto "senza utilizzare Outlook" poichè in rete ho trovato finora solo esempi che descrivono come inserire l'immagine nel body utilizzando Outlook

11 Risposte

  • zio Ken ha scritto:


    ...
    Ho scritto "senza utilizzare Outlook" poichè in rete ho trovato finora solo esempi che descrivono come inserire l'immagine nel body utilizzando Outlook
    E come intendevi poi inviare il messaggio? Con il metodo SendObject? CBO? MAPI?
  • Philcattivocarattere ha scritto:


    zio Ken ha scritto:


    ...
    Ho scritto "senza utilizzare Outlook" poichè in rete ho trovato finora solo esempi che descrivono come inserire l'immagine nel body utilizzando Outlook
    E come intendevi poi inviare il messaggio? Con il metodo SendObject? CBO? MAPI?
    Il metodo utilizzato nel 3d citato nel mess si, propone il metodo SendObject.
    E' possibile? O bisognerebbe utilizzare file esterni?
  • zio Ken ha scritto:


    Il metodo utilizzato nel 3d citato nel mess si, propone il metodo SendObject.
    Leggi questa pagina https://www.fmsinc.com/microsoftaccess/email/sendobject.html in particolare per quanto riguarda i limiti che ha il metodo SendObject.
    Non ho cercato su internet ma sicuramente quello che hai trovato e che faceva riferimento all'uso di Outlook permetteva di inserire nel testo del messaggio immagini perché era "formattato" come html e con SendObject non puoi farlo.
  • Philcattivocarattere ha scritto:


    zio Ken ha scritto:


    Il metodo utilizzato nel 3d citato nel mess si, propone il metodo SendObject.
    Leggi questa pagina https://www.fmsinc.com/microsoftaccess/email/sendobject.html in particolare per quanto riguarda i limiti che ha il metodo SendObject.
    Non ho cercato su internet ma sicuramente quello che hai trovato e che faceva riferimento all'uso di Outlook permetteva di inserire nel testo del messaggio immagini perché era "formattato" come html e con SendObject non puoi farlo.
    Grazie mille Phil... mi chiedevo, non esistono tipo librerie esterne utilizzate proprio per questo scopo?
    Outlook è l'unico metodo per inoltrare mail in formato html o tramite funzioni non è possibile ricreare creare un format html e fare in modo tale che, inoltrandolo venga visualizzato in modo corretto? Scusate se insisto ma ho constatato che molte persone non utilizzano outlook anzi, lo evitano a priori preferendo tipo thunderbird...
  • willy55 ha scritto:


    Per inserire una immagine nel body devi creare una mail nel formato HTML, poi se devi spedirla tramite Thunderbird puoi leggere questo link:
    https://answers.microsoft.com/it-it/msoffice/forum/msoffice_excel-mso_winother-mso_2010/inviare-mail-da-excel-con-thunderbird/7ca646e7-6fd8-40b4-9654-bdce12827727
    grazie mille willy per la segnalazione....cmq sono riuscito ad inviare anche con il metodo SendObject mail formattate in HTML. Il problema è che, se non passo per thunderbird il testo esce formattato in HTML ma l'immagine non viene contemplata mentre, se abilito l'editing della mail prima di inviarla, mi di apre thunderbird e devo abilitare le immagini nel body, come se le bloccasse...se le abilito, tutto funge, anche i link di collegamento all'interno delle mail...

    ora davo un occhiata al link che mi hai segnalato ma, sull'ultima stringa di codice mi segnala "impossibile trovare il file"...
    qui
        Call Shell(strCommand, vbNormalFocus)
  • L'errore che indichi "Impossibile trovare il file", nella esecuzione della Shell, indica che non riesce a risolvere il nome del file (normalmente in base al path per raggiungerlo e magari perché esistono spazi nel percorso).
    Controlla pertanto il contenuto della variabile strCommand.
  • zio Ken ha scritto:


    cmq sono riuscito ad inviare anche con il metodo SendObject mail formattate in HTML.
    Alla faccia di quanto dice la pagina che avevo indicato, eppure non sono proprio gli ultimi arrivati. Significa che le cose prima le devo provare anch'io.

    zio Ken ha scritto:


    Il problema è che, se non passo per thunderbird il testo esce formattato in HTML ma l'immagine non viene contemplata
    Come hai scritto il tutto?

    zio Ken ha scritto:


    sull'ultima stringa di codice mi segnala "impossibile trovare il file"... qui
        Call Shell(strCommand, vbNormalFocus)
    Verifica il percorso in cui è installato Thunderbird. Se è un sistema operativo a 64 bit si trova in C:\Program Files (x86)\..., salvo installazione in una cartella personalizzata o di una versione portable.
  • Philcattivocarattere ha scritto:


    zio Ken ha scritto:


    cmq sono riuscito ad inviare anche con il metodo SendObject mail formattate in HTML.
    Alla faccia di quanto dice la pagina che avevo indicato, eppure non sono proprio gli ultimi arrivati. Significa che le cose prima le devo provare anch'io.

    zio Ken ha scritto:


    Il problema è che, se non passo per thunderbird il testo esce formattato in HTML ma l'immagine non viene contemplata
    Come hai scritto il tutto?

    zio Ken ha scritto:


    sull'ultima stringa di codice mi segnala "impossibile trovare il file"... qui
        Call Shell(strCommand, vbNormalFocus)
    Verifica il percorso in cui è installato Thunderbird. Se è un sistema operativo a 64 bit si trova in C:\Program Files (x86)\..., salvo installazione in una cartella personalizzata o di una versione portable.
    Grazie ancora per le segnalazioni, effettivamente avendo il sistema a 64 bit il problema era la directory di installazione diversa...
    Phil ho creato una funzione che simula un file HTML che si implementa dei vari campi del form (oggetto, messaggo, path del logo Azienda e varie..) e viene richiamata nel SendObject nella parte EditMessage...diciamo che gia nel primo messaggio avevo un idea ma mi ero sconfortato ma se non provavo, sarei rimasto nel dubbio..

    cmq il problema ora è qui
            & "Immagine 1 (remota)" & "<br>" _
            & "<img src=""http://static.mozillazine.org/common/images/blimp.png"" moz-do-not-send=""true"">" _
            & "<br>" _
            & "Immagine 2 (locale)" & "<br>" _
            & "<img src=""file:///F:\logo.JPG"" moz-do-not-send=""true"">"
    la prima immagine viene caricata correttamente, la seconda viene allegata...non vi è metodo alcuno per poter fare in modo tale che il logo venga inserito nel body della mail e non come allegato?
  • Zio Ken,
    se osservi attentamente il codice della funzione descritta nel link citato:
    
    ' Vedasi:
    ' https://answers.microsoft.com/it-it/msoffice/forum/msoffice_excel-mso_winother-mso_2010/inviare-mail-da-excel-con-thunderbird/7ca646e7-6fd8-40b4-9654-bdce12827727
    
    Public Function fSendThunderbird()
    'http://forums.mozillazine.org/viewtopic.php?t=399230&highlight=&sid=2c05f35f3050c34449d0c0deaf16621a
    'http://kb.mozillazine.org/Command_line_arguments_-_Thunderbird
    'http://email.about.com/od/mozillathunderbirdtips/qt/Send_an_Image_Inline_Without_Attaching_It_in_Thunderbird.htm
    'http://kb.mozillazine.org/Creating_complex_mails_with_inline_images
        Dim strCommand As String ' Command line to prepare Thunderbird e-mail
        Dim strTo As String ' E-mail address
        Dim strCC As String 'E-mail address
        Dim strBcc As String 'E-mail address
        Dim strSubject As String ' Subject line
        Dim strBody As String ' E-mail body
        Dim strAttachment As String 'Allegati
        Const cFormato As Integer = 1   '1: HTML    2:Plain Text
        strTo = "*** L'indirizzo di posta elettronica viene rimosso per motivi di privacy ***, *** L'indirizzo di posta elettronica viene rimosso per motivi di privacy ***"
        strCC = "*** L'indirizzo di posta elettronica viene rimosso per motivi di privacy ***"
        strBcc = "*** L'indirizzo di posta elettronica viene rimosso per motivi di privacy ***"
        strSubject = "Test subject"
        strAttachment = "C:\test.doc,C:\test.png"
     
        strBody = "Linea 1<br>" _
            & "Linea 2" & "<br>" _
            & "Linea 3" & "<br>" _
            & "<br>" _
            & "Firma" & "<br>" _
            & "<br>" _
            & "Immagine 1 (remota)" & "<br>" _
            & "<img src=""http://static.mozillazine.org/common/images/blimp.png"" moz-do-not-send=""true"">" _
            & "<br>" _
            & "Immagine 2 (locale)" & "<br>" _
            & "<img src=""file:///c:/test.png"" moz-do-not-send=""true"">"
            
        strCommand = "C:\Program Files\Mozilla Thunderbird\thunderbird.exe"
      
        strCommand = strCommand & " -compose to='" & strTo & "'," _
            & "cc='" & strCC & "'," _
            & "bcc='" & strBcc & "'," _
            & "subject='" & strSubject & "'," _
            & "format='" & cFormato & "'," _
            & "body='" & strBody & "'," _
            & "attachment='" & strAttachment & "'"
            
        Call Shell(strCommand, vbNormalFocus)
    End Function
    
    e la confronti con la porzione da te sviluppata, ove indichi la problematica sulla seconda immagine (in locale):
    
            & "Immagine 1 (remota)" & "<br>" _
            & "<img src=""http://static.mozillazine.org/common/images/blimp.png"" moz-do-not-send=""true"">" _
            & "<br>" _
            & "Immagine 2 (locale)" & "<br>" _
            & "<img src=""file:///F:\logo.JPG"" moz-do-not-send=""true"">"
    
    puoi notare che il codice HTML, ove si effettua la ricerca della immagine (img src)
    
            & "<img src=""file:///F:\logo.JPG"" moz-do-not-send=""true"">"
    
    impiega, nel path, la barra retroversa ("\", specifica del sistema operativo Windows) e non la semplice barra ("/", applicabile nei sistemi Unix-like e nei HTML File Paths).

    Sostituisci il backslash ("\") nel forward slashes ("/") in base al percorso che deve essere soddisfatto (per accedere alla seconda immagine in locale) così, anche, come riportato nelle seguenti discussioni:
    https://stackoverflow.com/questions/21728850/how-to-give-src-to-the-img-tag-in-html-from-the-system-drive
    https://stackoverflow.com/questions/14489016/how-to-properly-reference-local-resources-in-html
    https://stackoverflow.com/questions/15102122/img-src-on-local-computer
    https://stackoverflow.com/questions/4090712/why-cant-i-do-img-src-c-localfile-jpg
    https://www.outsystems.com/forums/discussion/27014/how-to-access-local-image-resources-on-file-system-from-a-html-code-in-outsystems/

    A corollario si possono visionare i seguenti link, che trattano argomenti correlati, come:

    - gestire i path dei file in HTML assoluti o relativi
    https://www.w3schools.com/html/html_filepaths.as
    http://www.pagetutor.com/html_tutor/missing.htm
    http://www.homeandlearn.co.uk/WD/wds4p2.htm

    - inserire oggetti diversi nel body della mail
    https://stackoverflow.com/questions/25999201/add-signature-with-images-to-the-mail
    https://www.excelforum.com/excel-programming-vba-macros/1134790-vba-copy-content-to-or-screenshot-to-thunderbird.html
    https://stackoverflow.com/questions/47508927/sending-email-with-png-image-in-outlook-body-using-vba
    https://stackoverflow.com/questions/8804238/how-to-ensure-that-images-embedded-in-html-emails-show-up
    https://stackoverflow.com/questions/27544091/vba-email-embed-image-not-showing
    https://stackoverflow.com/questions/25749538/vba-emailing-a-range-and-an-image
    https://www.youtube.com/watch?v=GhiIM6GdKw

    - invio mail con Thunderbird
    http://kb.mozillazine.org/Command_line_arguments_-_Thunderbird
    https://openclassrooms.com/forum/sujet/mail-insertion-d-un-image-64613
    https://codes-sources.commentcamarche.net/source/31545-envoi-automatique-de-mail-avec-piece-jointe-en-vba-excel-word-ou-access-par-oulook-express-ou-modzilla-thunderbird-ou-d
    https://developer.mozilla.org/it/docs/Web/HTML/Element/img
  • Sempre puntuale ed esaustivo!

    Grazie infinite Willy, appena rientro provo il tuo suggerimento relativo al path, nel caso effettuo un replace poichè andando al manicomio per un bel po' (non me ne intendo assolutamente di HTML, mi sono aiutato con un editor online) ho provato ad inserire il path del logo presente in una tabella così com'era.... nel caso gli dichiaro una variabile e me lo richiamo con un dlookup e gli effettuo un replace. Sperando che di possa fare

    Edit: funge!!! Grazie infinite!
Devi accedere o registrarti per scrivere nel forum
11 risposte