Question

Je crée un fichier EML avec une pièce jointe à l'aide de JavaMail.

J'ai créé un fichier EML simple avec succès, mais l'ajout d'une pièce jointe ne fonctionne pas correctement. Je vais ajouter un fichier PDF. Mon fichier EML sera créé avec succès. Si j'ouvre le fichier EML généré avec Outlook, je ne trouverai pas mon fichier PDF en pièce jointe, mais le fichier EML lui-même. Est-ce que quelqu'un a une idée?

J'ai essayé deux variantes (avec le même résultat), j'ai utilisé la classe FileDataSource et la méthode simple avec MimeBodyPart # attachFile (Fichier) .

Je vais poster un exemple:

File pdfFile = new File("somePdfFile");

Properties p = System.getProperties();
Session session = Session.getInstance(p);
MimeMessage message = new MimeMessage(session);
// MimeBodyPart txt = new MimeBodyPart();
// txt.setText("");
MimeBodyPart mbp = new MimeBodyPart();
mbp.attachFile(attachment);
// FileDataSource fds = new FileDataSource(attachment);
// fds.setFileTypeMap(new FileTypeMap() {
//    
//   @Override
//   public String getContentType(String arg0) {
//     return "application/pdf";
//   }
//    
//    @Override
//    public String getContentType(File file) {
//      return "application/pdf";
//    }
//      
//  });
//  mbp.setDataHandler(new DataHandler(fds));
//  mbp.setFileName("\"" + attachment.getName() + "\"");
//  mbp.setDisposition(MimePart.ATTACHMENT);
//  mbp.setHeader("Content-ID", "Attachment");
Multipart mp = new MimeMultipart();
//  mp.addBodyPart(txt);
mp.addBodyPart(mbp);
message.setContent(mp);
File emlFile = new File("message.eml");
emlFile.createNewFile();
message.writeTo(new FileOutputStream(emlFile));

// do something with the EML file
// Desktop.getDesktop().open(emlFile);

Créer un fichier .eml (email) en Java

Merci pour votre réponse. J'ai téléchargé un fichier PDF (que j'utilise pour les tests, il s'agit d'un simple HelloWorld généré avec Crystal Reports) et le fichier EML généré, qui devrait inclure le fichier PDF.

Je viens de remarquer que si j'ouvre le fichier EML lié avec Apple Mail ou Outlook Express, cela fonctionne (mais sans possibilité d'édition). Peut-être que c'est un problème de Microsoft Outlook?

Les liens sont supprimés

Était-ce utile?

La solution

Vous devriez essayer d'ajouter les lignes d'en-tête que j'ai mentionnées tout en haut du message et voir comment Outlook les gère. Ajoutez un À: , De: , Objet: et peut-être même un Date: contenant de vraies données, et Outlook est plus susceptible de le traiter comme un message plutôt que comme un fichier.

Autres conseils

Zubi, il semble que le problème est que le type de contenu de la pièce jointe est défini sur "application / octet-stream". Il semble donc que le lecteur de courrier utilise le fichier PDF comme affichage alternatif du texte "texte". corps du message qui n'existe pas (il est juste vide).

Vous devrez me pardonner, cela fait plus d’un an que je n’ai pas traité avec Mime, mais je pense que vous allez vouloir A) Mettez du corps du texte dans le message, B) Assurez-vous que le type sur la pièce jointe est réglé sur application / pdf. J'espère que cela empêchera la lecture du courrier d'essayer d'afficher le PDF en tant que corps principal du message.

En dehors de cela, cela semble normal ... Maintenant, Outlook MIGHT est une chienne car il n'y a pas d'en-tête RFC 822 dans le corps principal. Vous voudrez peut-être ajouter au MOINS un De: , À: et un Objet: .

Le message a été transmis à mon code d'analyse MIME ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top