|
Вложение 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
|
и все равно не взлетело, поэтому сформировал структуру письма и передал процедуре ЭлектроннаяПочта.ОтправитьСообщение()
Такие дела )) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |