Apache James Mail Server - сохранение вложений в файловой системе

Я использую Apache James версии 3.0-beta1, и я хотел бы знать, есть ли способ отдельно сохранить тело письма от вложений. Прямо сейчас они оба сохраняются в БД, что приводит к заметному увеличению размера таблицы из-за того, что все вложения сохраняются в столбце MAIL_BYTES в форме потока байтов.

Есть ли способ переместить вне БД вложения и оставить внутри БД только тело письма? В долгосрочной перспективе это поведение по умолчанию приведет к краху моей БД.

1 ответ

Вы можете просто написать почтовое сообщение, чтобы получить вложения от почты, а затем сохранить их в определенной папке в вашей файловой системе. Чтобы быть более конкретным, в mailet, получите MimeMessage от org.apache.mailet.Mail, а затем используйте его для проверки наличия вложений с помощью метода getFileName(). Этот метод возвращает имена файлов, если заголовки Disposition и ContentType не равны NULL. Если результат не является нулевым, то это означает, что к bodyPart у вас есть прикрепленный файл. Затем с помощью getInputStream() вы можете сохранить его в любом месте.

Другие вопросы по тегам