javamail在发送之前将附件加载到内存中吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javamail在发送之前将附件加载到内存中吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1379字,纯文字阅读大概需要2分钟。
内容图文
我需要创建一个包含即时组合的附件的电子邮件.在我的初稿中,我将附件构建为String.但是在代码中,其他人指出字符串可能非常大.它通常是几千字节,但偶尔可能是几兆字节.所以他们说我应该逐行写入临时文件,然后将文件附加到电子邮件中.否则,我可能会用尽堆空间.
我想知道这是否真的有帮助.如果JavaMail在发送之前将整个文件读入内存,则没有任何区别.当然,创建一个临时文件会引入其他烦恼,例如找到合适的目录来放置它,确保我有权限等等.但是如果Javamail以某些适度大小的块读取文件,那么它将避免不合适记忆问题.
一个侧面问题是:据我了解,Javamail同步发送.因此,如果我创建文件,发送它,然后删除文件,那么在实际发送文件之前应该没有删除文件的问题,对吧?
解决方法:
如果您使用DataHandler实现,是的,您可以流式传输它.我们一直这样做
MimeBodyPart mbp2 = new MimeBodyPart();
// attach the file to the message
mbp2.setDataHandler(new DataHandler(fids[i]));
mbp2.setFileName(fids[i].getName());
这个例子中的fids [i]是我们自己的DataSource接口实现
public abstract interface javax.activation.DataSource {
// Method descriptor #4 ()Ljava/io/InputStream;
public abstract java.io.InputStream getInputStream() throws java.io.IOException;
// Method descriptor #8 ()Ljava/io/OutputStream;
public abstract java.io.OutputStream getOutputStream() throws java.io.IOException;
// Method descriptor #10 ()Ljava/lang/String;
public abstract java.lang.String getContentType();
// Method descriptor #10 ()Ljava/lang/String;
public abstract java.lang.String getName();
}
内容总结
以上是互联网集市为您收集整理的javamail在发送之前将附件加载到内存中吗?全部内容,希望文章能够帮你解决javamail在发送之前将附件加载到内存中吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。