Вы используете javax.mail?
Если это так, вам нужно подождать, пока не закончится отправка письма, о чем вы узнаете, зарегистрировав TransportListener .
Это также означает, что вы не сможете использовать статические методы Transport.send (), но вам придется создавать и очищать свой собственный сеанс и транспорт.
Я пытаюсь вспомнить детали давным-давно ... Я думаю, что DataHandler или DataSource не закрывают поток ввода, когда они закончили его читать, поэтому вам нужно сохранить ссылку на нее и закрыть ее самостоятельно, прежде чем вы сможете удалить базовый файл.