6
votes

Image Enceinte en Java Mail - CID ne fonctionne pas

Je travaille sur une application pour envoyer des mails aux listes, etc. Il est écrit en Java à l'aide de l'API Javax.Mail. Le problème ici est, je ne peux pas incorporer des images à l'aide d'un CID.

Ceci est la source du courrier envoyé: xxx

J'ai essayé différents CID , Ajout à la CID, réglage de la disposition sur en ligne, HTML validé etc. Je ne peux pas obtenir cela pour travailler, Thunderbird et Gmail Voir le courrier avec des images 'mortes'. J'ai lu que le client recherche le CID dans le courrier, donc je figuré qu'il devrait récupérer l'image correctement. L'envoi de la pièce jointe fonctionne, mais l'incorporation ne le fait pas. Toute personne qui a une idée? Est-il lié à la structure multipart?

Le code Java pour la création du message (j'ai commenté certaines lignes essayant de le résoudre ..) xxx

Ne vous dérangeez pas que la CID soit la même pour chaque pièce jointe, plus tard, ce sera le nom du fichier - je ne teste que avec une pièce jointe unique pour l'instant. J'espère que cela aide ..


4 commentaires

Le code serait vraiment utile.


Le même problème ou un problème très similaire était déjà résolu dans Ce fil !


Le fil que vous avez lié ne fournit pas de solution valide. J'ai besoin de la pièce jointe ajoutée sous la forme d'une image intégrée inline. Je ne peux plus encoderebase64 l'image à nouveau pour , de cette façon, la base64string sera dans le courrier deux fois. J'ai ajouté le code pour créer le message ci-dessus.


Je ne comprends pas pourquoi il ne récupère pas la pièce jointe à travers la CID. La source du courrier envoyé ressemble exactement à celle que j'enverrais avec un autre client de messagerie. Ce problème n'est toujours pas corrigé, quiconque a une idée?


3 Réponses :


4
votes

J'ai trouvé qu'il n'y avait rien de mal à la source de courrier. C'est la façon dont les mailclients gèrent les CID. Gmail.com nécessite que le CID soit défini entre . Thunderbird n'a pas encore montré mes images .. Je pense que cela doit être unique de sorte de sorte que cela n'a pas été imaginé pourquoi et comment le réparer. Trouvé à travers Incorporer des images en e-mail HTML avec Java Mail


4 commentaires

Cela semble être dû au mauvais type de contenu du format MIME. Je pense que la structure des parties du corps est fausse. Celui qui ne fonctionne pas a: type de contenu: multipart / mixte; Cela devrait fonctionner: Type de contenu: Multipart / associé; type = "multipart / alternative"; Je n'ai pas encore trouvé la structure correcte pour afficher des images text / html / intégrées comme elle le devrait.


La solution est une combinaison de la référence CID et de la structure multipart. Validez votre CID (besoins , parfois un @). Assurez-vous que votre racine est multipart / relatif, ajoutez le MultiPart / Alternative de HTML / Texte à celui-ci (enveloppé dans un bodyPart) et ajoutez ensuite les pièces jointes à la partie racine (chacune dans son propre bodyPart). Voir coderanch.com/t/503380/java / java / java-mail-text-html-attachm est


Une très bonne source de combinaison de parties du corps blogs.technet.com/b/exchange/archive/2011/04/21/...


Pour le faire fonctionner dans Thunderbird, supprimez cette ligne: Pièce jointeBodyPart.Setheader ("Content-ID", ""); et ajoutez ces deux lignes: pièce jointebodypart.addheader ("Content-ID", ""); attachmentbodypart.addheader ("type de contenu", "image / png"); Cela suppose que vous avez les suivants quelque part dans votre corps HTML:



0
votes

CID fonctionne correctement, le problème est que lorsque vous envoyez un courrier à Mutille Email ID, Vous devez installer Mimemessage à chaque fois que vous ne recevrez pas d'erreur

mimemessage m = neuf mimémessage (maillage);


0 commentaires

0
votes

Il semble incroyable, mais toutes les balises HTML doivent être sur la même ligne. Entre '<' et '>', il ne peut y avoir de retour de chariot. L'analyseur est très grincheux.


0 commentaires