Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to send email with large attach? (OutOfMemoryError: java heap space)
    primarykey
    data
    text
    <p>I met an <code>OutOfMemoryError: Java Heap Space</code> when I tried to attach a large attachment. When emails with some large files (say 50M) are sent, the error will be thrown.<br></p> <p>The code is like this:</p> <pre><code>//add attaches if (vo.getAttaches() != null) { InputStream iStream = null; ByteArrayDataSource bdSource = null; String filename = null; for (int i = 0; i &lt; vo.getAttaches().length; i++) { iStream = new FileInputStream(vo.getAttaches()[i]); bdSource = new ByteArrayDataSource(iStream, null); filename = vo.getAttachesFileName()[i]; email.attach(bdSource, MimeUtility.encodeText(filename), filename); } } </code></pre> <p>It is <code>bdSource = new ByteArrayDataSource(iStream, null)</code> throws the exception above. I had read "<a href="https://stackoverflow.com/questions/1945390/out-of-memory-using-java-mail">out of memory using java mail</a>" but i don't understand. How can I upload large attaches? If I define a buffer like <code>byte[1024]</code>, then how to code <code>email.attach()</code>? Should all data in buffer use the same <code>filename</code>?</p> <hr> <p><strong>Update:</strong> Thanks for your kindness. I use FileDataSource instead of ByteArrayDataSource, it seems that there's no exception in my send() function. But I still can not send emails with large attach. The <strong>apache james</strong> got this error: </p> <pre><code> java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2786) at java.io.ByteArrayOutputStream.toByteArray(ByteArrayOutputStream.java:133) at com.sun.mail.util.ASCIIUtility.getBytes(ASCIIUtility.java:261) at javax.mail.internet.MimeMessage.parse(MimeMessage.java:338) at org.apache.james.core.MimeMessageWrapper.parse(MimeMessageWrapper.java:477) at org.apache.james.core.MimeMessageWrapper.loadMessage(MimeMessageWrapper.java:205) at org.apache.james.core.MimeMessageWrapper.checkModifyHeaders(MimeMessageWrapper.java:414) at org.apache.james.core.MimeMessageWrapper.setHeader(MimeMessageWrapper.java:426) at org.apache.james.core.MimeMessageCopyOnWriteProxy.setHeader(MimeMessageCopyOnWriteProxy.java:652) at org.apache.james.transport.mailets.UsersRepositoryAliasingForwarding.service(UsersRepositoryAliasingForwarding.java:101) at org.apache.james.transport.mailets.LocalDelivery.service(LocalDelivery.java:64) at org.apache.james.transport.LinearProcessor.service(LinearProcessor.java:424) at org.apache.james.transport.JamesSpoolManager.process(JamesSpoolManager.java:405) at org.apache.james.transport.JamesSpoolManager.run(JamesSpoolManager.java:309) at java.lang.Thread.run(Thread.java:619) 03/07/12 13:08:33 ERROR spoolmanager: An error occurred processing Mail1341292071375-0 through transport 03/07/12 13:08:33 ERROR spoolmanager: Result was error 03/07/12 13:08:33 ERROR spoolmanager: Exception in processor &lt;error&gt; java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2786) at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:94) at org.apache.james.core.MimeMessageUtil.copyStream(MimeMessageUtil.java:168) at org.apache.james.core.MimeMessageWrapper.writeTo(MimeMessageWrapper.java:276) at org.apache.james.core.MimeMessageUtil.writeTo(MimeMessageUtil.java:66) at org.apache.james.core.MimeMessageUtil.writeTo(MimeMessageUtil.java:50) at org.apache.james.mailrepository.MessageInputStream.writeStream(MessageInputStream.java:131) at org.apache.james.mailrepository.MessageInputStream.&lt;init&gt;(MessageInputStream.java:101) at org.apache.james.mailrepository.JDBCMailRepository.store(JDBCMailRepository.java:718) at org.apache.james.transport.mailets.ToRepository.service(ToRepository.java:98) at org.apache.james.transport.LinearProcessor.service(LinearProcessor.java:424) at org.apache.james.transport.JamesSpoolManager.process(JamesSpoolManager.java:405) at org.apache.james.transport.JamesSpoolManager.run(JamesSpoolManager.java:309) at java.lang.Thread.run(Thread.java:619) 03/07/12 13:08:33 ERROR spoolmanager: An error occurred processing Mail1341292071375-0 through error 03/07/12 13:08:33 ERROR spoolmanager: Result was ghost </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload