|   |   | 
| 
 | Вложение Excel в ИнтернетПочта с ошибкой | ☑ | ||
|---|---|---|---|---|
| 0
    
        СноваЗдорова 26.01.15✎ 11:28 | 
        Добрый день, помогите, пожалуйста, может кто-то сталкивался?
 Я регламентным заданием формирую отчет. Табличный документ сохраняю в формате Эксель через метод Записать(). Обработка сразу этот файл помещает вложение в ИнтернетПочтовоеСообщение методом Добавить(). Временный файл в момент отладки открывается и содержимое устраивает, но в сообщении, которое приходит на почту "битый" файл. Сначала удалось победить это в тестовой базе тем, что сменил формать .xlsx на xls97. Сейчас перенесли в боевую базу и сообщения снова стали приходить с "битым" вложением и смена формата не помогает. Расскажите, есть у кого опыт, как побороть эту проблему, может идеи какие? | |||
| 1
    
        ShoGUN 26.01.15✎ 11:33 | 
        (0) Если промежуточно сохранять отчёт, до вложения в письмо - правильный файл сохраняется? Уверен, что формировании письма проблема, а не в получении? Получаешь обычным почтовым клиентом?     | |||
| 2
    
        СноваЗдорова 26.01.15✎ 11:55 | 
        До вложения временный файл отлично открывается     | |||
| 3
    
        СноваЗдорова 26.01.15✎ 12:22 | 
        Получаю аутлуком     | |||
| 4
    
        DrZombi гуру 26.01.15✎ 12:32 | 
        Код покажи, все работает. Проблема на вашей стороне :)     | |||
| 5
    
        СноваЗдорова 26.01.15✎ 12:32 | 
        Есть еще интересный момент. Я отправляю почту на ящики нашего почтовика и во внешние ящики. Во внешние приходит вложение не битое. Если отправляю с внешнего этот файл, тоже все, естественно в порядке.     | |||
| 6
    
        СноваЗдорова 26.01.15✎ 12:33 | 
        Сообщение = Новый ИнтернетПочтовоеСообщение;
 Сообщение.Отправитель = Отправление.УчетнаяЗаписьОтправитель.АдресЭлектроннойПочты; Тема = Отправление.Наименование; Если Отправление.СформироватьНаименованиеПоКоду Тогда Попытка Выполнить("Тема = " + Отправление.Тема); Исключение ЗаписьЖурналаРегистрации("Не сформировано название отчета", УровеньЖурналаРегистрации.Предупреждение, Отправление.Ссылка.Метаданные(), Отправление.Ссылка, ОписаниеОшибки()); Возврат; КонецПопытки; КонецЕсли; Сообщение.ИмяОтправителя = Отправление.УчетнаяЗаписьОтправитель.Наименование; Сообщение.Тема = Тема; ВремОтчПуть = КаталогВременныхФайлов() + Отправление.Наименование + ".xls"; Рез.Записать(ВремОтчПуть, ТипФайлаТабличногоДокумента.XLS); Вложение = Сообщение.Вложения.Добавить(ВремОтчПуть, Отправление.Наименование); Получатели = Отправление.Получатели.Выбрать(); Пока Получатели.Следующий() Цикл Если ЗначениеЗаполнено(Получатели.ЭлектронныйАдрес) Тогда АдресПолучателя = Получатели.ЭлектронныйАдрес; Иначе АдресПолучателя = УправлениеЭлектроннойПочтой.ОпределитьАдресПолучателя(Получатели.КонтактноеЛицо); КонецЕсли; ПочтовыеАдреса = Сообщение.Получатели; ПочтовыйАдрес = ПочтовыеАдреса.Добавить(); ПочтовыйАдрес.Адрес = АдресПолучателя; КонецЦикла; Попытка Почта.Послать(Сообщение); Исключение ЗаписьЖурналаРегистрации("Ошибка отправки отчета", УровеньЖурналаРегистрации.Ошибка, Отправление.Ссылка.Метаданные(), Отправление.Ссылка, ОписаниеОшибки()); Возврат; КонецПопытки; Почта.Отключиться(); | |||
| 7
    
        IBTM 26.01.15✎ 12:33 | 
        (0) было подобное, проблему по моему решил, что в сам текст имени файла дописывал его расширение.     | |||
| 8
    
        ShoGUN 26.01.15✎ 12:34 | 
        (5) Самый трэш. Я сталкивался уже с тем, что ИнтернетПочта не всегда корректно работает, но у меня проблемы были при получении, тоже с конкретного сервера.     | |||
| 9
    
        DrZombi гуру 26.01.15✎ 12:40 | 
        А я вот так делаю:
 ИмяФайлаЕксель = ПолучитьИмяВременногоФайла("tmp"); //XLSX ТабДок.Записать(ИмяФайлаЕксель,ТипФайлаТабличногоДокумента.XLSX) ИПП = Новый ИнтернетПочтовыйПрофиль; ИПП.АдресСервераSMTP = Константы.SMTPServer.Получить(); ИПП.ВремяОжидания = Константы.SMTPВремяОжидания.Получить(); ИПП.Пароль = Константы.SMTPServerPasswprd.Получить(); ИПП.ПарольSMTP = Константы.SMTPПарольSMTP.Получить(); ИПП.Пользователь = Константы.SMTPServerLogin.Получить(); ИПП.ПользовательSMTP = Константы.SMTPПользовательSMTP.Получить(); ИПП.ПортSMTP = Константы.SMTPПортSMTP.Получить(); ИПП.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию; ИПП.АутентификацияPOP3 = СпособPOP3Аутентификации.Обычная; Сообщение = Новый ИнтернетПочтовоеСообщение; НетАдресов = Истина; Копия_ТЗ_АдресаПочты = ТЗ_АдресаПочты.Скопировать(,"АдресЭлектроннойПочты"); Копия_ТЗ_АдресаПочты.Свернуть("АдресЭлектроннойПочты"); Для Каждого СтрокаПочты Из Копия_ТЗ_АдресаПочты Цикл АдресЭлектроннойПочты = СокрЛП(СтрокаПочты.АдресЭлектроннойПочты); Если ПустаяСтрока(АдресЭлектроннойПочты) Тогда Продолжить; КонецЕсли; Адрес = Сообщение.Получатели.Добавить(АдресЭлектроннойПочты); Адрес.ОтображаемоеИмя = "<Имя пользователя, представление>"; НетАдресов = Ложь; КонецЦикла; Если НетАдресов Тогда Возврат Ложь; КонецЕсли; ТекстТемы = ""; ТекстСообщения = ""; ПолучитьТекстСообщенияТекстТемы(СтрокаОтдел, ТекстТемы,ТекстСообщения, ДатаВремяОтчета,ДатаВремяОтчетаСервер); Сообщение.Отправитель.Адрес = Константы.Отправитель.Получить(); Сообщение.Тема = ТекстТемы; Сообщение.Тексты.Добавить(ТекстСообщения); Вложение = Новый ДвоичныеДанные(ИмяФайлаЕксель); Сообщение.Вложения.Добавить(Вложение,"Файл_"+Формат(ДатаВремяОтчета,"ДФ=dd.MM.yyyy")+".XLSX"); ПочтаКлиент = Новый ИнтернетПочта; ПочтаКлиент.Подключиться(ИПП, ПротоколИнтернетПочты.POP3); ПочтаКлиент.Послать(Сообщение); ПочтаКлиент.Отключиться(); | |||
| 10
    
        DrZombi гуру 26.01.15✎ 12:42 | 
        (6) У тебя добавление Кривое. Там нуна добавить Двоичные данные. При этом имя файла не имеет значение.     | |||
| 11
    
        kortun 26.01.15✎ 12:45 | 
        (7) ага, было такое же, пока расширение не стали дописать во вложении, на той стороне приходил якобы битый файл, хотя если вручную потом расширение добавить, то все ок было.     | |||
| 12
    
        СноваЗдорова 26.01.15✎ 13:44 | 
        (10) Ну как бы он вложение делает двоичные данные. Загружает туда файл, видимо. И такой момент, что на gmail почту приходит вложение читабельное     | |||
| 13
    
        СноваЗдорова 26.01.15✎ 13:45 | 
        (9) Но попробую как ты предлагаешь. расскажу тогда пзже ))     | |||
| 14
    
        СноваЗдорова 26.01.15✎ 13:46 | 
        (11) расширение и имя файла во вложении нормальные     | |||
| 15
    
        СноваЗдорова 26.01.15✎ 14:16 | 
        Не помогли советы выше, парни )))     | |||
| 16
    
        СноваЗдорова 26.01.15✎ 14:21 | 
        похоже косяк у Outlook. через веб-интерфейс вложения открываются... во внешней почте открываются, и, внимание! на Тандерберде открываются. Парни, есть идеи?     | |||
| 17
    
        DrZombi гуру 26.01.15✎ 14:30 | 
        (16) Странно, я то вообще отправляю с сервера.
 И причем тут ОутЛюк? | |||
| 18
    
        DrZombi гуру 26.01.15✎ 14:34 | 
        +(17) Как вариант, для теста отправь текстовый файл.
 Можешь еще отправить Zip архив. А ты под каким пользователем отправляешь? У вас УФ или Толстый клиент? | |||
| 19
    
        Масянька 26.01.15✎ 14:52 | 
        (16) Ящик (с которого отправляется) на бесплатной почте какой-то или у местного провайдера?     | |||
| 20
    
        СноваЗдорова 26.01.15✎ 15:06 | 
        Ящик с которого шлем на нашем сервере... Мало того с тестовой базы, где я писал эту процедуру через эту же учетку в том же формате отправляется файл и открывается без проблем. Черная магия...     | |||
| 21
    
        СноваЗдорова 26.01.15✎ 15:06 | 
        (18) с сервера в регламенте     | |||
| 22
    
        СноваЗдорова 26.01.15✎ 15:07 | 
        (17) потому что при использовании не аутлука как почтового клиента вложение открывается как надо...     | |||
| 23
    
        СноваЗдорова 26.01.15✎ 16:07 | 
        В общем расскажу на всякий случай как победил...
 в итоге методом тыка менял форматы, на второй итерации формата xlsx стало выгружаться читабельное вложение. Что к чему осталось неясным... Такие дела | |||
| 24
    
        СноваЗдорова 02.02.15✎ 12:52 | 
        (9) Ну в общем говоря, хочу добавить окончательное решение. На самом деле надо было сразу в типовой посмотреть ))
 Все как у тебя написано на 8.3 без ошибки работает. На 8.2 пришлось исправить на Вложение = Новый ДвоичныеДанные(ИмяФайлаЕксель); Сообщение.Вложения.Добавить(Вложение,"Файл_"+Формат(ДатаВремяОтчета,"ДФ=dd.MM.yyyy")+".XLSX"); на Рез.Записать(ВремОтчПуть, ТипФайлаТабличногоДокумента.XLSX); Вложение = ПолучитьДвоичныеДанные(ВремОтчПуть); Сообщение.Вложения.Добавить(Вложение, Отправление.Наименование + ".xlsx"); и функция Функция ПолучитьДвоичныеДанные(ИмяФайла) Файл = Новый Файл(ИмяФайла); Если Файл.Существует() Тогда Данные = Новый ДвоичныеДанные(ИмяФайла); Попытка УдалитьФайлы(ИмяФайла); Исключение КонецПопытки; Возврат Данные; Иначе Возврат Неопределено; КонецЕсли; КонецФункции В итоге все взлетело | |||
| 25
    
        СноваЗдорова 06.02.15✎ 13:57 | 
        и все равно не взлетело, поэтому сформировал структуру письма и передал процедуре ЭлектроннаяПочта.ОтправитьСообщение() 
 Такие дела )) | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |