Est-ce que l'API java mail utilise le streaming? où puis-je obtenir le code source pour le confirmer. aussi j'essaye d'envoyer le courrier en utilisant le mode cru et non-cru. en mode brut je peux passer un flux d'entrée au constructeur MimeMessage: [/ b]Mémoire insuffisante en utilisant le courrier java
new MimeMessage(session, doc.getBodyInputStream());
En mode non-cru, je dois faire la suivante Comme il peut y avoir tout type mime, donc je dois utiliser DataHandler
et DataSource
. Depuis les contrats d'interface DataSource
dit de fournir le inputStream frais chaque fois que nous invoquons getInputStream()
, nous devons conserver les données dans le byte[]
qui va lancer OOM pour les documents de grande taille ou des documents Y at-il un moyen d'éviter cela?
MimeMessage msg = new MimeMessage(session);
byte[] bArr = doc.getBody();
ByteArrayInputStream ins = new ByteArrayInputStream(
bArr != null && bArr.length > 0 ? bArr : "".getBytes());
msg.setDataHandler(new DataHandler(new ByteArrayDataSource(ins, mimeType)));
Si vous ne parvenez pas à conserver la pièce jointe en mémoire, dans quelle mesure pensez-vous que le réseau de messagerie la gérera? – skaffman