2016-08-25 3 views
0

Je veux envoyer un e-mail qui contient uniquement un fichier joint, aucun texte ou autre chose. Pourquoi devrais-je le représenter en tant que composant unique d'un courriel en plusieurs parties?
Pourquoi je ne peux pas écrireJAVA mail api: Pourquoi vous avez besoin de Multipart pour envoyer un email avec pièce jointe?

message.setFileName(filepath); 

Lorsqu'en autre part cela fonctionne

message.setText("blablabla"); 
+0

Parce qu'un mail doit avoir une partie de corps – Jens

+0

Ce n'est pas à cause de l'API java email. C'est parce que le protocole SMTP. Cochez cette case http://stackoverflow.com/questions/3902455/smtp-multipart-alternative-vs-multipart-mixed –

+0

Jens, @ RicardoVila Vous n'avez pas raison. Les e-mails SMTP prennent en charge les messages dont le corps n'est pas un texte, sans l'utilisation de multipart. Vérifiez la RFC: https://www.ietf.org/rfc/rfc2045.txt –

Répondre

1

Parce que ce sont les normes MIME, tous les messages électroniques doivent suivre le MIME RFC pour que les clients de messagerie pour afficher correctement l'email. Une image attachée est une donnée binaire, alors qu'un corps de message est toujours ASCII, un utilisateur ne peut pas ouvrir un email avec un binaire dans le corps displayd, ce qui serait inutile. Le code binaire de l'image est traduit en BASE64, de sorte que le binaire peut être transféré en quelque sorte de caractères ASCII et cela doit s'asseoir dans une limite MIME de courrier électronique. Le logiciel de courrier électronique sait comment trouver ces limites et affichera l'image en tant que pièce jointe ou s'affichera correctement dans le corps, en fonction de la configuration de vos limites MIME. Multipart signifie que l'email a plusieurs limites, où le corps de l'email ASCII est l'un d'eux, peu importe si celui-ci est blanc ou non.

+0

Cela a du sens, merci pour la réponse – John

+0

Lire https://www.ietf.org/rfc/rfc2045.txt - corps de message contenant une pièce jointe plutôt qu'un texte est prise en charge. Oui, ils doivent être encodés (en base64 ou quoted-printable par exemple) mais ils n'ont pas besoin d'être en multipart. Si vous croyez le contraire, veuillez fournir une référence. –