Base64 images à gmail

je génère des images en ligne pour un e-mail envoyé depuis l'iPad. Semble grande dans tous les clients de courrier électronique de bureau, mais gmail ne semble pas aimer l'image de base64 et il apparaît sous forme de texte.

Quelqu'un a pu intégrer des images avec base64 et gmail? Ou connaissez-vous une meilleure solution pour envoyer des e-mails HTML avec des images de l'iPad?

35
demandé sur Steven Baughman 2010-07-19 12:38:31

5 réponses

les liens de Moin Zaman afficher les résultats des tests qui sont périmés (à partir de 2008). À partir de mes tests approfondis Aujourd'hui Gmail ne soutient l'affichage d'images embarquées pour les deux méthodes.

utiliser base64 encoding image inline dans <img src="...">

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

utiliser l'image encodée base64 comme pièce jointe

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
...

pour faire vos propres tests, vous pouvez envoyer un e-mail avec l'image incrustée en ligne en utilisant l'une des techniques suivantes

envoyer un courriel en utilisant l'un des éléments ci-dessus à votre compte Gmail, puis ouvrir le courriel dans le Client Web Gmail (n'importe quel navigateur qui fonctionne) et utiliser la Flèche vers le bas à côté du bouton Réponse pour choisir L'option Afficher L'Original. Cela vous montrera comment il est reçu.

je pensez que la meilleure pratique est d'utiliser l'image intégrée comme méthode d'attachement.

dans mes essais avec le client Web Gmail, si j'envoyais 30 images dans un seul e-mail de différentes tailles, quelques-unes ne se chargeraient pas montrant avec succès le conteneur d'image mais pas l'image. Si cela arrive, essayez de recharger la page.

dans mes tests (Windows 7)...

  • Chrome (latest) avait besoin de quelques recharges pour charger/afficher avec succès les 30 images
  • Opera (dernier en date) wouldn't afficher avec succès les 30 images quel que soit le nombre de recharges
  • Firefox (le plus récent) a montré les 30 images sans problème
  • Internet Explorer 9 (le plus récent) a montré toutes les 30 images sans problème
  • Safari (le plus récent) a montré toutes les 30 images sans problème
15
répondu cusman 2018-03-27 07:48:57

il ne semble pas y avoir de documentation officielle mais Gmail ne supporte certainement pas cela, en ligne ou comme pièce jointe en base64.

voici quelques tests que le moniteur de campagne a essayé:

Intégration d'images dans l'email

Intégration d'images revisité

6
répondu Moin Zaman 2012-08-13 04:05:45

assurez-vous de définir Content-Type: multipart/mixed; , la limite et le Content-Transfer-Encoding: base64

2
répondu valexa 2010-07-19 15:20:22

Essayez Ces Copains.. Je suis sûr que ce Serait le travail pour inclure une image en tant que pièce jointe

                    $output_hex_string_img = $image;
                    $output_bin_string_img = base64_decode($output_hex_string_img);
                    //echo base64_encode( $output_bin_string_img );
                    $XXX = base64_encode( $output_bin_string_img );

                    $from_name = "Senders Name";
                    $from_mail = "yyyyyyyy@gmail.com";
                    $replyto = "yyyyyyyy@gmail.com";
                    $subject = "Device Missing Notification";
                $message = "Device Missing notification has been activated on your device. Please change this setting when you find your smartphone back. Best Of Luck!!\r\r ";



                    $mailto = 'xxxxxxxx@mail.com';



                        $file = $XXX;
                        $filename = "Print_shot.png";
                        $uid = md5(uniqid(time()));
                        $name = basename($file);
                        $header = "From: ".$from_name." <".$from_mail.">\r\n";
                        $header .= "Reply-To: ".$replyto."\r\n";
                        $header .= "MIME-Version: 1.0\r\n";
                        $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
                        $header .= "This is a multi-part message in MIME format.\r\n";
                        $header .= "--".$uid."\r\n";
                        $header .= "Content-type:text/html; charset=iso-8859-1\r\n";
                        $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
                        $header .= $message."\r\n\r\n";
                        $header .= "--".$uid."\r\n";
                        $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
                        $header .= "Content-Transfer-Encoding: base64\r\n";
                        $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
                        $header .= $file."\r\n\r\n";
                        $header .= "--".$uid."--";
                        mail($mailto, $subject, "", $header);

mais vous devez inclure tout ce qui est dans les en-têtes en utilisant différents types de contenu dans les en-têtes. et quelle que soit Apparaissent dans le Corps qui pourrait être le troisième paramètre de la fonction mail sera passé comme une chaîne vide..

-2
répondu Shivek Parmar 2013-12-03 09:43:46
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];

[picker addAttachmentData:UIImageJPEGRepresentation(_tempImage,1) mimeType:mimeType fileName:filename];

[picker setMessageBody:emailBody isHTML:YES];

Si isHTMLYES, addAttachmentData va passer automatiquement à la chaîne base64, dans l'email html peut vous voir img.

Si isHTML NON, addAttachmentData est l'attachement.

-9
répondu Lion 2012-08-21 11:05:39