|
v7: Отправка почты из 1С в терминальном режиме. | ☑ | ||
---|---|---|---|---|
0
Славянин
27.02.17
✎
15:34
|
Добрый день. Ребята,может сталкивался кто-нибудь. С помощью Dialmail.dll настроил отправку почты из некоторых документов. С 1с все работают в терминальном режиме. Т.е. при печати документа на сервере в Темп сохраняется файл. Потом он отправляется по почте. Так вот почему то отправляется через раз. Т.е. изначально файл не сохраняется в темп. Под админом всё работает чётко. Может какие-то права досутпа нужно настроить на сервере?
|
|||
1
Это_mike
27.02.17
✎
15:35
|
ну так посмотри... например, процмоном..
|
|||
2
ELEA26
27.02.17
✎
15:41
|
(0) а штатные средства 1С почему не используешь? Зачем DLL?
|
|||
3
ELEA26
27.02.17
✎
15:41
|
ой... 1С7.7... Извини...
|
|||
4
LienXo
27.02.17
✎
15:42
|
(2) потому что топорики
(0) имя файла - константа? |
|||
5
ELEA26
27.02.17
✎
15:44
|
(0) Ну тогда много всего. Через раз - это у кого-то да, у кого-то нет? Или у одного и того же то да, то нет? Если 1 в базе - всегда отправляется? Временные файлы использует? Если да, то куда(имя разное, путь в локальный профиль)? (длина пути, русские буквы в логинах, пробелы). Брандмауэр(фаервол)?
|
|||
6
Serginio1
27.02.17
✎
17:28
|
Попробуй
Функция ПолучитьАтачмент(file,Врап) data = Врап.СоздатьОбъект("System.Net.Mail.Attachment",file); // Add time stamp information for the file. disposition = data.ContentDisposition; IO_File=врап.получитьТип("System.IO.File"); disposition.CreationDate = IO_File.GetCreationTime(file); disposition.ModificationDate = IO_File.GetLastWriteTime(file); disposition.ReadDate = IO_File.GetLastAccessTime(file); // Add the file attachment to this e-mail message. return data; КонецФункции // ПолучитьАтачмент Процедура ОтправитьПисьмо(СписокФайлов,ТемаПисьма,smtp,Кому,ОтКого,login,password, ПолноеИмяОтКого) врап=СоздатьОбъект("NetObjectToIDispatch45"); врап.УстЭтоСемерка(); port=Врап.ChangeType("System.Int32",25); mail = врап.СоздатьОбъект("System.Net.Mail.SmtpClient",smtp,port); истина=Врап.ChangeType("System.Boolean","true"); ложь=Врап.ChangeType("System.Boolean","false"); // mail.EnableSsl = истина; mail.UseDefaultCredentials = ложь; // mail.Credentials = врап.СоздатьОбъект("System.Net.NetworkCredential",login, Password); mail.DeliveryMethod = Врап.ПолучитьТип("System.Net.Mail.SmtpDeliveryMethod").Network; Message = врап.СоздатьОбъект("System.Net.Mail.MailMessage"); MailAddressType= Врап.ПолучитьТип("System.Net.Mail.MailAddress"); Message.From = врап.СоздатьОбъект(MailAddressType,ОтКого,ПолноеИмяОтКого)); Message.To.Add(врап.СоздатьОбъект(MailAddressType,Кому)); Message.Subject = ТемаПисьма; Message.IsBodyHtml = истина; Message.Body = ""; Для сч=1 По СписокФайлов.размерсписка() Цикл Файл=СписокФайлов.ПолучитьЗначение(сч); message.Attachments.Add(ПолучитьАтачмент(Файл,Врап)); КонецЦикла; mail.Send(Message);//отправка Message.Dispose(); mail.Dispose(); КонецПроцедуры // ОтправитьПисьмо врап=СоздатьОбъект("NetObjectToIDispatch45"); Patch=врап.получитьТип("System.IO.Path"); Путь=Patch.GetTempPath(); //Возврат; Для сч=1 По СпзКлиенты.РазмерСписка() Цикл стр=""; ВыбКонтрагент=СпзКлиенты.получитьзначение(сч,стр); ФайлДляТаблицы=ПрефиксФайла+"_"+стр; Файл=ФайлДляТаблицы+".XLS"; Файл=Patch.Combine(Путь,Файл); СпзФайлов.ДобавитьЗначение(Файл); // Сообщить(Файл); Сформировать(1,Файл); КонецЦикла; Сообщ="Отправлено!"; // глПросмотрСписка(СпзФайлов); Попытка ОтправитьПисьмо(СпзФайлов,ПрефиксФайла); Исключение Сообщ="Ошибка |"+ОписаниеОшибки(); КонецПопытки; Для сч=1 По СпзФайлов.размерсписка() Цикл Файл=СпзФайлов.ПолучитьЗначение(сч); Сообщить(Файл); фс.УдалитьФайл(файл); КонецЦикла; |
|||
7
Serginio1
27.02.17
✎
17:31
|
Скачать и посмотреть примеры можно отсюда
http://ru.stackoverflow.com/questions/527763/%d0%9a%d0%b0%d0%ba-%d0%b2%d1%8b%d0%b7%d0%b2%d0%b0%d1%82%d1%8c-%d0%bc%d0%b5%d1%82%d0%be%d0%b4-%d0%b8%d0%b7-c-%d0%b2-1%d0%a1/527802#527802 Вот еще пример ROM-Mail.dll через SSL работает? |
|||
8
vcv
27.02.17
✎
19:10
|
А как создаётся тот файл, который в TEMP? Если, к примеру, печатью на PDF-принтер, то это асинхронный процесс и к моменту отправки почты файл может быть еще не готов.
Попробовать, в качестве эксперимента, вставить паузу в секунду-две между созданием файла в ТЕМП и отправкой. Если проблема рассосётся, значит асинхронность всему виной. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |