在实际的开发中我们经常会遇到需要通过程序去发送邮件的问题,而我们现在用得比较多的是javamail,我们知道javamail发送本地附件是很容易的,但是如果附件是存储在数据库的大字段呢,那该怎么办呢?
InputStream in = new ByteArrayInputStream(att[i].getAttachment());
File f=File.createTempFile(att[i].getAttachmentName(), ".m64");
OutputStream fout = new BufferedOutputStream(new FileOutputStream(f));
int b = -1;
while ((b = in.read()) != -1) {
fout.write(b);
}
fout.flush();
FileDataSource fileds=new FileDataSource(f);
MimeBodyPart fbp = new MimeBodyPart();
fbp.setDataHandler(new DataHandler(fileds));
fbp.setFileName(MimeUtility.encodeText(att[i].getAttachmentName()));
multipart.addBodyPart(fbp);
从大字段中获取字节信息,创建临时文件,再使用临时文件作为邮件附件。
曾试过直接用字节数组构建
MimeBodyPart
,但是邮件发送过去附件内容是带过去了,但是打开附件看到的是空白
分享到:
相关推荐
例如,`ExportExcel.java`可能会创建一个Excel文件的字节数组输入流,然后`JavaMialUtil2.java`通过`InputStreamUtil.java`提供的方法将这个输入流转换为`DataSource`,进一步创建`MimeBodyPart`,最后添加到邮件中...
在某些场景下,我们可能希望直接以流的形式处理Excel数据,而不是先将其保存为一个实际的文件,然后再作为附件发送。这样可以节省磁盘空间,提高效率。本文将详细介绍如何在Java中实现这个功能。 首先,我们需要...
在邮件发送中,我们需要将文件读取为字节流,然后将这些流包装成`DataSource`,以便作为邮件附件添加。例如,使用`FileInputStream`读取文件,然后通过`DataSource`接口的`getInputStream()`方法获取流。 4. **构建...
3. 动态生成3D图像,将其转换为字节数组。 4. 使用`MimeMessageHelper`将3D图像作为附件或内嵌在HTML邮件内容中。 这种方法避免了在服务器上存储大量3D图像,同时也满足了将3D报表直接发送给用户的需求。注意,为了...
常见的实现有:FileDataSource(用于文件)、ByteArrayDataSource(用于字节数组)等。 #### 3. 内联图片处理 为了在HTML邮件中显示图片,通常需要将图片作为内联资源添加到邮件中。这可以通过在HTML文本中引用...
对于内嵌图片和附件,需要确保文件读取和转换为字节数组时也使用了正确的编码。 总结起来,Spring整合Freemarker和JavaMail API可以方便地创建复杂的HTML邮件,包括内嵌图片和附件,并能有效解决乱码问题。通过模板...
可以是FileDataSource(来自本地文件),也可以是ByteArrayDataSource(来自内存中的字节数组)。 以下是一个简单的JavaMail发送邮件的示例: ```java import javax.mail.*; import javax.mail.internet.*; ...
这可以是文件、内存中的字节数组或者任何能够提供输入流的对象。 在提供的源代码文件中,如`AtUnit.java`、`ClassNameFinder.java`等,可能包含了单元测试和类名查找的功能,这些通常是为了确保邮件发送功能的正确...
JavaMail API支持添加文件附件,你需要将文件转换为字节数组,然后添加到`MimeBodyPart`中。同时,对于收到的带有附件的邮件,也需要解析`MimeMessage`并提取附件内容。 安全性是邮箱系统不可忽视的一部分。你需要...
《JSP网络编程从基础到实践》光盘说明 光盘的实例代码目录中包含了前10章的所有实例的源代码,实例名称及其所处章节如下: 第1章 JSP技术概述 实例1 第一个JSP页面 ... 实例69 发送带有附件的邮件 实例70 接收EMAIL
《JSP网络编程从基础到实践》光盘说明 光盘的实例代码目录中包含了前10章的所有实例的源代码,实例名称及其所处章节如下: 第1章 JSP技术概述 实例1 第一个JSP页面 ... 实例69 发送带有附件的邮件 实例70 接收EMAIL
JSP网络编程从基础到实践的实例代码 《JSP网络编程从基础到实践》光盘说明 光盘的实例代码目录中包含了前10章的所有实例的源代码,实例名称及其所处章节如下: ... 实例69 发送带有附件的邮件 实例70 接收EMAIL
2. 创建DataHandler:根据数据源创建DataHandler实例,例如从文件或字节数组创建。 3. 使用DataHandler:将DataHandler与邮件的附件或其他需要处理的数据关联起来。 4. 处理MIME类型:利用MIME类型信息来正确地解析...
实例63 用servlet获取表单数据 实例64 用servlet读写文件数据 实例65 用servlet访问数据库 实例66 一个简单的struts应用实例——用户登录 JSP中的JavaMail开发 实例67 发送文本格式的邮件 ...
通过JavaMail,开发者可以实现发送、接收邮件,包括添加附件、设置HTML内容、处理多部分消息等。 4. **异常处理**:Java中的异常处理是程序健壮性的重要保障,使用`try-catch-finally`语句块可以捕获并处理运行时...
6. **输入/输出流**:掌握文件I/O操作,包括字节流和字符流,以及对象序列化和反序列化。 7. **多线程**:理解线程的概念,如何创建和管理线程,以及同步和互斥的概念,如synchronized关键字和wait/notify机制。 8...