SMTP+attached files vs Antivirus

Ура, одержана победа 🙂 противостояния антивируса и передачей почтового сообщения с прикрепленными файлами средствами SMTP.

Предыстория

Давно создал пакет в СУБД Oracle, который использует UTL_SMTP для отправки из базы писем. Все работало отлично, пока на одном из проектов письмо пришло некорректным, а именно: приаттаченный файл имел неправильное имя, расширение .dat и не раскодированным.

Иными словами: когда мы посылаем письмо, то прикрепляем файлы посредством перекодировки в base64. Например, средствами шаблона мы генерируем какой-нибудь отчет или документ (например, в MS Excel или MS Word), полученный CLOB кодируем в base64 и вставляем в письмо. Отсылаем. Получатель получает письмо, которое содержит прикрепленный документ. Так вот, когда получатель открывает письмо, то в аттаче у него оказывается кодированный в base64 текст документа 🙁

Решение

Все оказалось просто до банальности :).

При отправке с почтового сервера, письмо проверялось антивирусом, установленным на нем (ну, в нашем случае был Касперский). И он добавлял свои пять копеек в заголовок, что приводило к пролеме.

Как оказалось виной всему было то, что при формировании строка

Content-Disposition: attachment; filename="test.xls"

была разнесена на 2 строки 🙂

Content-Disposition: attachment;
filename="test.xls"

и до момента, пока мы не встретились с антивирусом, это не было столь критичным для почтового сообщения.

Leave a Reply

Your email address will not be published. Required fields are marked *