我需要发送一封电子邮件和一张嵌入式图片。电子邮件发送后,应立即删除应用程序服务器中的映像。我面临的问题是,在发送电子邮件之后,控件将包含
的方法File file = new File("../bar.jpeg")
if(file.exists()){
file.delete();
System.out.println("Barcode Image Deleted");
}
打印“条形码图像已删除”。但是,图像不会被删除,并且仍然存在于同一位置。我正在使用multipart将图像附加到电子邮件中。
为什么不删除?
答案 0 :(得分:8)
您使用的是javax.mail吗? 如果是这样,您需要等到邮件发送完毕,您可以通过注册TransportListener找到该邮件。
这也意味着您将无法使用静态Transport.send()方法,但必须构建并清理自己的会话和传输。
我正在尝试记住前一段时间的细节......我认为DataHandler或DataSource在读完输入流后不会关闭它,所以你需要保留对它的引用并关闭它在您删除基础文件之前自己。
答案 1 :(得分:6)
File.delete
方法返回boolean
,表示删除是否成功。
由于没有删除文件的权限,可能无法成功执行文件删除。
答案 2 :(得分:3)
File.delete()返回true / false条件。尝试检查删除的返回条件,以查看系统是否实际将文件报告为已删除。
答案 3 :(得分:3)
首先,如果成功删除文件,File.delete()将返回一个布尔值。检查该值并至少记录下来。
如果没有删除,那么我猜是