Apache James Mail Server - сохранение вложений в файловой системе
Я использую Apache James версии 3.0-beta1, и я хотел бы знать, есть ли способ отдельно сохранить тело письма от вложений. Прямо сейчас они оба сохраняются в БД, что приводит к заметному увеличению размера таблицы из-за того, что все вложения сохраняются в столбце MAIL_BYTES в форме потока байтов.
Есть ли способ переместить вне БД вложения и оставить внутри БД только тело письма? В долгосрочной перспективе это поведение по умолчанию приведет к краху моей БД.
1 ответ
Вы можете просто написать почтовое сообщение, чтобы получить вложения от почты, а затем сохранить их в определенной папке в вашей файловой системе. Чтобы быть более конкретным, в mailet, получите MimeMessage от org.apache.mailet.Mail, а затем используйте его для проверки наличия вложений с помощью метода getFileName(). Этот метод возвращает имена файлов, если заголовки Disposition и ContentType не равны NULL. Если результат не является нулевым, то это означает, что к bodyPart у вас есть прикрепленный файл. Затем с помощью getInputStream() вы можете сохранить его в любом месте.