Lors de la création d' e-mails, vous devez définir le type de contenu sur multipart/alternative
lors de l'envoi de HTML et de TEXTE ou multipart/mixed
lors de l'envoi de TEXTE et de pièces jointes.
Alors, que faites-vous si vous souhaitez envoyer du HTML, du texte et des pièces jointes? Utilise les deux?
email
smtp
content-type
mime
Xeoncross
la source
la source
Réponses:
J'ai relevé ce défi aujourd'hui et j'ai trouvé ces réponses utiles mais pas assez explicites pour moi.
Edit : Je viens de trouver l' e - mail Apache Commons qui résume bien cela, ce qui signifie que vous n'avez pas besoin de savoir ci-dessous.
Si votre besoin est un email avec:
La seule structure que j'ai trouvée qui fonctionne avec Gmail / Outlook / iPad est:
Et le code est:
Et un exemple d'utilisation avec Gmail
la source
"<" id-left "@" id-right ">"
.À utiliser
multipart/mixed
avec la première piècemultipart/alternative
et les pièces suivantes pour les pièces jointes. À leur tour, utiliseztext/plain
ettext/html
pièces dans lamultipart/alternative
pièce.Un client de messagerie capable doit alors reconnaître la
multipart/alternative
partie et afficher la partie texte ou la partie html si nécessaire. Il doit également montrer toutes les pièces suivantes en tant que pièces de fixation.La chose importante à noter ici est que, dans les messages MIME en plusieurs parties, il est parfaitement valide d'avoir des parties dans des parties. En théorie, cette imbrication peut s'étendre à n'importe quelle profondeur. Tout client de messagerie raisonnablement capable devrait alors être en mesure de traiter de manière récursive toutes les parties du message.
la source
multipart/alternative
correctement les sous-parties de votre . La dernière entrée est la partie ayant la priorité la meilleure / la plus élevée, vous souhaiterez donc probablement la placertext/html
comme dernière sous-partie. Selon RFC1341 .multipart/related
et quand l'utiliser?multipart/alternative
indique qu'une seule des parties incluses doit être affichée - par exemple, une partie esttext/plain
et une partie esttext/html
. Ainsi, le client de messagerie ne doit pas afficher les deux parties mais une seule. c'est-à-dire qu'ils ne sont pas liés.multipart/related
indique que les différentes sous-parties font toutes partie de la partie racine principale, par exemple la partie principale esttext/html
et les sous-parties sont des images incorporées. Voir ici pour plus d'informations.mutt
client CLI pour vérifier que vous avez correctement configuré vos messages MIME en plusieurs parties. Si vous appuyez surv
pendant la visualisation d'un message, il affichera et autorisera le parcours de l'arborescence imbriquée des parties MIME.Les messages ont du contenu. Le contenu peut être du texte, du html, un DataHandler ou un Multipart, et il ne peut y avoir qu'un seul contenu. Les Multiparts n'ont que des BodyParts mais peuvent en avoir plusieurs. Les BodyParts, comme les messages, peuvent avoir un contenu qui a déjà été décrit.
Un message avec du HTML, du texte et une pièce jointe peut être visualisé hiérarchiquement comme ceci:
Et le code pour construire un tel message:
la source
J'ai touché ce problème. Cette architecture (d'après la réponse de Lain) a fonctionné pour moi. Voici la solution en Python.
Voici la fonction principale de création d'e-mails:
Voici le code complet pour envoyer un email contenant html / texte / pièce jointe:
la source
En me basant sur l'exemple de Iain, j'avais un besoin similaire de composer ces e-mails avec du texte clair, du HTML et plusieurs pièces jointes séparés, mais en utilisant PHP. Étant donné que nous utilisons Amazon SES pour envoyer des e-mails avec des pièces jointes, l'API vous oblige actuellement à créer l'e-mail à partir de zéro à l'aide de la fonction sendRawEmail (...).
Après de nombreuses recherches (et une frustration plus grande que la normale), le problème a été résolu et le code source PHP affiché afin qu'il puisse aider d'autres personnes confrontées à un problème similaire. J'espère que cela aidera quelqu'un - la troupe de singes que j'ai forcée à travailler sur ce problème est maintenant épuisée.
Code source PHP pour l'envoi d'e-mails avec pièces jointes à l'aide d'Amazon SES.
la source
$boundary
contiennent généralement tout le corps avec des pièces jointes, mais ne$boundary2
contiennent que du HTML ou du texte brut. Solution géniale. Dites-moi s'il vous plaît, c'est votre solution pour envoyer du texte brut, est-ce que ce message alternatif est si le client de messagerie ne prend pas en charge HTML? Merci!Bonne réponse Lain!
J'ai fait plusieurs choses pour que cela fonctionne dans un ensemble plus large d'appareils. À la fin, je listerai les clients sur lesquels j'ai testé.
J'ai ajouté un nouveau constructeur de construction qui ne contenait pas les pièces jointes de paramètres et n'utilisait pas MimeMultipart ("mixed"). Il n'est pas nécessaire de mélanger si vous n'envoyez que des images en ligne.
Dans la méthode addTextVersion, j'ai ajouté un jeu de caractères lors de l'ajout de contenu, cela pourrait / devrait probablement être transmis, mais je l'ai simplement ajouté de manière statique.
Le dernier élément ajoutait à la méthode addImagesInline. J'ai ajouté la configuration du nom de fichier d'image à l'en-tête par le code suivant. Si vous ne le faites pas, au moins sur le client de messagerie par défaut Android, il aura des images en ligne qui portent le nom Inconnu et ne les téléchargeront pas automatiquement et ne les présenteront pas par courrier électronique.
Alors enfin, voici la liste des clients sur lesquels j'ai testé. Outlook 2010, Outlook Web App, Internet Explorer 11, Firefox, Chrome, Outlook utilisant l'application native d'Apple, E-mail passant par Gmail - Client de messagerie du navigateur, Internet Explorer 11, Firefox, Chrome, client de messagerie par défaut Android, client de messagerie par défaut osx IPhone, Gmail client de messagerie sur Android, client de messagerie Gmail sur IPhone, e-mail passant par Yahoo - Client de messagerie navigateur, Internet Explorer 11, Firefox, Chrome, client de messagerie par défaut Android, client de messagerie par défaut osx IPhone.
J'espère que cela aide quelqu'un d'autre.
la source
Voici le meilleur: Message mime en plusieurs parties / mixte avec pièces jointes et images en ligne
Et image: https://www.qcode.co.uk/images/mime-nesting-structure.png
Schéma multipart / connexe / alternative
la source
Sous-type mixte
Sous-type alternatif
La source
la source