Base64 images to gmail

前端 未结 7 1426
再見小時候
再見小時候 2020-11-28 06:20

I\'m generating some inline images for an email sent from the iPad. Looks great in all desktop email clients, but gmail doesn\'t seem to like the base64 image and it shows u

相关标签:
7条回答
  • 2020-11-28 07:20

    The links from Moin Zaman show test results that are outdated (from 2008). As of my thorough testing today Gmail does support displaying embedded images for both methods.

    Use base64 encoding image inline within <img src="...">

    <html><body><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA9QAAADmCAIAAAC77FroAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO..."></body></html>
    

    Use base64 encoded image as attachment

    Message-ID: <BE0243A40B89D84DB342702BC5FD6D313EA3BE1B@BYMAIL.example.com>
    Accept-Language: en-US
    Content-Language: en-US
    X-MS-Has-Attach: yes
    X-MS-TNEF-Correlator:
    x-originating-ip: [xxx.xxx.xxx.xxx]
    
    Content-Type: multipart/related;
        boundary="_038_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_";
        type="multipart/alternative"
    MIME-Version: 1.0
    Return-Path: email@example.com
    X-OriginatorOrg: example.com
    
    --_038_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_
    Content-Type: multipart/alternative;
        boundary="_000_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_"
    
    ...skipping Content-Type: text/plain which would be here for this example...
    
    --_000_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_
    Content-Type: text/html; charset="iso-8859-1"
    Content-Transfer-Encoding: quoted-printable
    
    <html><body><img border=3D"0" width=3D"980" height=3D"230" id=3D"Picture_x0020_1" src==3D"cid:image001.png@01CDA268.204677C0"></body></html>
    
    --_000_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_--
    
    --_038_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_
    Content-Type: image/png; name="image001.png"
    Content-Description: image001.png
    Content-Disposition: inline; filename="image001.png"; size=32756;
        creation-date="Mon, 08 Oct 2012 15:27:07 GMT";
        modification-date="Mon, 08 Oct 2012 15:27:07 GMT";
    Content-ID: <image001.png@01CDA268.204677C0>
    Content-Transfer-Encoding: base64
    
    iVBORw0KGgoAAAANSUhEUgAAA9QAAADmCAIAAAC77FroAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO
    xAAADsQBlSsOGwAAf5lJREFUeF7tvQlgVdW18L+ZR20mpsSLCYlBQKwgwRCMr9TAqzg0CAl98Y9a
    ikBfHxL1A/r0tUr77Feg1mDav4LUijxTk8hLRIstQ2mJhEiAWAEpNCGRa8KUSQXCzLf2cOZz7j33
    5s5Zx6j3nruHtX97n33WWWfttbtdv36d4IEEkAASQAJIAAkgASSABJCA/wl0938VWAMSQAJIAAkg
    ASSABJAAEkAClAAq3zgOkAASQAJIAAkgASSABJBAgAig8h0g0FgNEkACSAAJIAEkgASQABJA5RvH
    ...
    

    To do your own testing, you can send email with inline embedded image using one of the following techniques

    • Using code by creating your own base64 image strings
    • Enable and use Google Lab for Inserting Images
    • Paste image into Email client like Outlook 2010

    Send an email using one of the above to your Gmail account, then open the Email in Gmail Web Client (any browser that works) and use the Down-Arrow next to the Reply button to choose the Show Original option. This will show you how it is received.

    I think best practice is to use the embedded image as attachment method.

    In my testing with Gmail Web Client, if I sent 30 images in a single email of different sizes, a few would not load successfully showing image container but not the image. If that happens, try reloading the page.

    In my testing (Windows 7)...

    • Chrome (latest) needed a couple of reloads to successfully load/show all 30 images
    • Opera (latest) wouldn't successfully show all 30 images regardless of number of reloads
    • Firefox (latest) consistently showed all 30 images without issue
    • Internet Explorer 9 (latest) consistently showed all 30 images without issue
    • Safari (latest) consistently showed all 30 images without issue
    0 讨论(0)
提交回复
热议问题