Java 邮件 API - 来自 FileInputStream 的数据源
Java Mail API - Datasource from FileInputStream
正在将 JavaMailAPI 集成到我的网络应用程序中。我必须在 html 正文中嵌入图像。我如何从 src/main/resource 目录获取图像而不是硬编码图像路径。
请找到我硬编码图像路径的以下代码。
try {
messageBodyPart = new MimeBodyPart();
DataSource fds = new FileDataSource("C:\email\logo_email.png");
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader("Content-ID","<image>");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);
System.out.println("Done");
} catch (Exception e) {
e.printStackTrace();
}
我想通过以下代码获取图像:( src/main/resource )
ClassLoader classLoader = getClass().getClassLoader();
FileInputStream fileinputstream = new FileInputStream(new
File(classLoader.getResource("email/logo_email.png").getFile()));
我不知道在 DataSource 中调用 fileinputstream
不要使用 URL.getFile()
因为它 returns URL
...
的文件名部分
使用 URLDataSource
而不是 FileDataSource
。尝试这样的事情:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = classLoader.getResource("email/logo_email.png");
DataSource ds = new URLDataSource(url);
编辑
在 Web 应用程序中 getClass().getClassLoader()
可能无法获得正确的 class 加载程序。应该使用 Thread
的上下文 class 加载程序...
正在将 JavaMailAPI 集成到我的网络应用程序中。我必须在 html 正文中嵌入图像。我如何从 src/main/resource 目录获取图像而不是硬编码图像路径。
请找到我硬编码图像路径的以下代码。
try {
messageBodyPart = new MimeBodyPart();
DataSource fds = new FileDataSource("C:\email\logo_email.png");
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader("Content-ID","<image>");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport.send(message);
System.out.println("Done");
} catch (Exception e) {
e.printStackTrace();
}
我想通过以下代码获取图像:( src/main/resource )
ClassLoader classLoader = getClass().getClassLoader();
FileInputStream fileinputstream = new FileInputStream(new
File(classLoader.getResource("email/logo_email.png").getFile()));
我不知道在 DataSource 中调用 fileinputstream
不要使用 URL.getFile()
因为它 returns URL
...
使用 URLDataSource
而不是 FileDataSource
。尝试这样的事情:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = classLoader.getResource("email/logo_email.png");
DataSource ds = new URLDataSource(url);
编辑
在 Web 应用程序中 getClass().getClassLoader()
可能无法获得正确的 class 加载程序。应该使用 Thread
的上下文 class 加载程序...