Привет. Есть такая простенькая задачка - удалить файл с диска после того как он был отправлен вложением по почте. Проблема в том, что метод delete() не всегда работает (например файл занят другим приложением). Пробовал перед удалением вызывать System.gc() - срабатывает в 80 процентах случаев, т.к. сам GC не всегда вызывается. Так вот, при вложении файла в письмо, сам файл заблокирован некоторое время и нужно освободить ресурсы, но что именно - не знаю. Помогите, вот код для вложения файла в письмо:
| Код | .... protected MimeMultipart multipart; protected BodyPart bodyText; protected BodyPart bodyAttach; .... multipart = new MimeMultipart(); bodyText = new MimeBodyPart(); DataHandler data = new DataHandler(body, "text/html"); bodyText.setDataHandler(data); multipart.addBodyPart(bodyText);
//file - сам вложенный файл FileDataSource fds = new FileDataSource(file); MimetypesFileTypeMap ftm = new MimetypesFileTypeMap(); //mimeType - MIME-тип ftm.addMimeTypes(mimeType); fds.setFileTypeMap(ftm); DataHandler attachData = new DataHandler(fds); bodyAttach = new MimeBodyPart(); bodyAttach.setDataHandler(attachData); //attachName - имя файла bodyAttach.setFileName(attachName); multipart.addBodyPart(bodyAttach); message.setContent(multipart); try { Transport.send(message); } ....
|
|