Мы рассмотрим распространенную и крайне неприятную ситуацию, когда вложения, формируемые и отправляемые из 1С через стандартные механизмы почты, внезапно перестают открываться в почтовом клиенте Microsoft Outlook. Проблема особенно коварна тем, что ранее такой механизм рассылки мог безупречно работать на протяжении многих лет, а затем без видимых причин начал давать сбои. При этом вложения могут корректно открываться при загрузке с других почтовых сервисов, что указывает на специфическую проблему в связке 1С-Outlook.
Давайте подробно разберем, как проявляется данная ошибка. Пользователи сообщают, что при попытке открыть вложения, полученные из 1С в Outlook 2010, 2016 или других версиях, возникает сообщение об ошибке следующего содержания: "не удается открыть файл, так как формат или расширение является недопустимым, убедитесь что файл не поврежден и расширение является допустимым". Это сообщение является ключевым индикатором, указывающим на проблему с интерпретацией файла Outlook'ом, а не с его повреждением.
Важно отметить следующие особенности:
.zip, .xls, .xlsx, .pdf..mxl могут открываться без проблем.На первый взгляд, ситуация кажется парадоксальной: код в 1С не менялся, а Outlook вдруг начал "отказываться" от вложений. Однако, опыт показывает, что корень проблемы часто кроется во внешних факторах, особенно в изменениях политик безопасности и обновлений программного обеспечения. В данном случае, наиболее вероятной причиной является изменение в способе обработки электронных писем и их вложений в Microsoft Outlook, вызванное обновлениями безопасности.
Давайте рассмотрим подробнее:
К счастью, решение данной проблемы оказалось удивительно простым, хотя и не совсем очевидным. Как было выяснено опытным путем, для того чтобы вложения из 1С снова начали корректно открываться в Outlook, достаточно добавить любую строку (даже пустой пробел) в тело отправляемого электронного письма. Это действие, казалось бы, незначительное, позволяет Outlook корректно интерпретировать MIME-структуру сообщения и обрабатывать вложения без ошибок.
Давайте посмотрим на пример кода 1С, который демонстрирует, как это можно сделать. Мы возьмем код из исходной темы и добавим в него необходимое изменение.
ЛогинРобот = "***";
ИмяРобот = "***";
ПарольРобот = "***";
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Профиль.ПортSMTP = 465;
Профиль.Пользователь = ЛогинРобот;
Профиль.Пароль = ПарольРобот;
Профиль.ПользовательSMTP = ЛогинРобот;
Профиль.ПарольSMTP = ПарольРобот;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = ложь;
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Отправитель = ЛогинРобот;
Сообщение.ИмяОтправителя = ИмяРобот;
Сообщение.Тема = "Возвратная тара на " + Строка(Формат(ТекущаяДата(),"ДФ=ддММгггг"));
// *** Ключевое изменение: добавление пустой строки в тело письма ***
Сообщение.Тексты.Добавить(" ");
Сообщение.Вложения.Добавить("c:\sheduler\Tara\1.xlsx","1.xlsx");
Сообщение.Получатели.Добавить("***");
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Попытка
Почта.Послать(Сообщение);
Почта.Отключиться();
Сообщить("Отчет ""Возвратная тара"" отправлены!!!");
Исключение
Сообщить("Не cмог отправить письмо!!!");
КонецПопытки;
Почта.Отключиться();
Исключение
Сообщить("Не могу соединиться с сервером!!!");
КонецПопытки;
Как вы видите, для решения проблемы достаточно добавить всего одну строку: Сообщение.Тексты.Добавить(" ");. Этот метод объекта ИнтернетПочтовоеСообщение предназначен для добавления текстового содержимого в тело письма. Даже если мы добавим просто пробел, это будет достаточно, чтобы Outlook "удовлетворился" наличием тела письма и корректно обработал вложения.
Мы выяснили, что причина в ужесточении политик безопасности Outlook. Когда мы добавляем даже пустую строку в тело письма, мы фактически формируем MIME-сообщение, которое содержит секцию для текстового тела, пусть и пустую. Это соответствует ожиданиям Outlook и его новым, более строгим правилам обработки входящих сообщений. Outlook перестает рассматривать такое письмо как "подозрительное" или "некорректно сформированное", и спокойно позволяет пользователю работать с вложениями.
Это показывает, как важно учитывать не только прямую функциональность, но и неявные требования к формату данных, которые могут меняться со временем в зависимых системах. То, что раньше было просто допустимым поведением (отправка письма только с вложениями), теперь может восприниматься как отклонение от неявных стандартов или потенциальная угроза безопасности.
Помимо основного решения, мы также рекомендуем учитывать следующие моменты, которые могут помочь в подобных ситуациях:
В заключение, проблема с неоткрывающимися вложениями из 1С в Outlook, несмотря на свою внезапность и кажущуюся загадочность, имеет достаточно простое решение. Добавление пустой строки в тело письма является эффективным способом обойти новые ограничения безопасности Outlook, позволяя вашей системе рассылки из 1С снова работать стабильно.