|
v8: 1C и MS Exchange Server | ☑ | ||
---|---|---|---|---|
0
istekanov
15.10.13
✎
16:10
|
Ситуация следующая имеется почтовый сервер: ms exchange server 2010, отключены поддержка imap, smtp и pop (их не включат).
Необходимо обрабатывать из 1С письма с почтового ящика exchange. Хочу использовать EWS http://msdn.microsoft.com/en-us/library/dd877045(v=exchg.140).aspx VKSOFT 05.12.12 - 18:13 Вот нашел пример для c# ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); service.Credentials = new WebCredentials("user", "pass", "domain"); А сможет 1с так подключиться? Не пойму в какую сторону копать. Есть еще пример с веб-сервисом может в его сторону копать public static ExchangeServiceBinding GetBinding( String server, String domain, String user, String password) { var esb = new ExchangeServiceBinding(); // Указываем используемые креды esb.Credentials = new NetworkCredential(user, password, domain); // Задаем входную точку для EWS esb.Url = "https://"; + server + "/EWS/Exchange.asmx"; esb.RequestServerVersionValue = new RequestServerVersion(); // Указываем тип Exchange сервера // Для Exchange 2007 SP1 и 2010 подходит Exchange2007_SP1 // Для Exchange 2007 без SP нужно указать Exchange2007 esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1; return esb; } у кого какие соображения? Тема уже была и никто внятно не ответил. |
1 3 4 28 31 32 35 36 37 |
||
1
shuhard
15.10.13
✎
16:14
|
(0)[Тема уже была и никто внятно не ответил.]
ссылки в студию, ибо по связке 1С и MAPI написано достаточно |
2 |
||
2
istekanov
15.10.13
✎
16:21
|
||||
3
Infsams654
15.10.13
✎
16:34
|
(0) а почему бы просто почту юзера не обработать? Зачем на ms exchange затачивать?
|
|||
4
istekanov
15.10.13
✎
16:35
|
(0) в частности пытаюсь в конфигураторе добавить WS-ссылку https://ххххххххх/ews/Services.wsdl
прохожу авторизацию и мне говорится : "Неправильный путь к файлу 'messages.xsd'" |
7 8 |
||
5
istekanov
15.10.13
✎
16:36
|
Согласно статье на хабре http://habrahabr.ru/post/117268/
люди из С# успешно получают почту из exchange через ews. |
6 |
||
6
Infsams654
15.10.13
✎
16:42
|
(5) не против. Только exchange - это не все что есть в природе. Почта - она всемирна, а exchange - это только писк от ms
|
|||
7
Infsams654
15.10.13
✎
16:46
|
(4) не факт что 1С ws-ссылка это поймет. Скачай https://ххххххххх/ews/Services.wsdl, открой программно ws-определение из этого файла, открой по нему прокси и дерзай
|
8 9 |
||
8
istekanov
15.10.13
✎
17:03
|
(7) можно пример?
Потому что WSlink = Новый WSОпределения("https://хххххххх/ews/Services.wsdl";, "логин", "пароль", 5); выдает ту же ошибку что и в (4). |
9 |
||
9
Infsams654
15.10.13
✎
17:07
|
11 |
|||
10
Jaap Vduul
15.10.13
✎
17:08
|
Импортировать иксченджевый wsdl в 1цэ не получится.
Можете попробовать вручную лепить soap-конверты и отправлять их через xmlhttp. |
12 15 19 |
||
11
Infsams654
15.10.13
✎
17:09
|
(9)+ если что-то не понравится в файле, то оторректировать можно
|
14 |
||
12
Infsams654
15.10.13
✎
17:10
|
(10) что значит не получиться? Открываешь в броузере https://ххххххххх/ews/Services.wsdl и сохраняешь в xml
|
16 |
||
13
istekanov
15.10.13
✎
17:11
|
Пробую так:
WSОпределение = Новый WSОпределения("https://xxxx/EWS/Exchange.asmx";, "user", "pass", 5); Сервис= Новый WSПрокси(WSОпределение, "https://xxxx/EWS/Exchange.asmx";, "ExchangeServiceBinding", "ExchangeServicePortType"); Выдает {Форма.Форма.Форма(97)}: Ошибка при вызове конструктора (WSПрокси) Сервис= Новый WSПрокси(WSОпределение, "https://xxxxxx/EWS/Exchange.asmx";, "ExchangeServiceBinding", "ExchangeServicePortType"); по причине: Сервис не найден. {https://xxxxx/EWS/Exchange.asmx}:ExchangeServiceBinding Где взять правильный 3 параметр функции Новый WSПрокси(.. |
|||
14
Jaap Vduul
15.10.13
✎
17:11
|
(11)
Можете не терять напрасно время. |
17 |
||
15
Infsams654
15.10.13
✎
17:12
|
(10) через xmlhttp - флаг в руки. Я за. Только это отменяет всю жесть веб-сервисов.
|
|||
16
Jaap Vduul
15.10.13
✎
17:12
|
(12)
1цэ в итоге скажет "Неверный формат". И всё. |
18 22 23 |
||
17
Infsams654
15.10.13
✎
17:13
|
(14) а почему ?
|
|||
18
Infsams654
15.10.13
✎
17:14
|
(16) нифига, проверено
|
20 |
||
19
istekanov
15.10.13
✎
17:14
|
(10) А вот отсюда можно подробнее???
1. Почему не получится? Проблема в самой 1С? 2. Можно пример пары пакетов "вручную лепить soap-конверты и отправлять их через xmlhttp"? |
22 |
||
20
Jaap Vduul
15.10.13
✎
17:15
|
(18)Что проверено?
У вас получилось Services.wsdl импортировать в 1цэ? |
21 |
||
21
Infsams654
15.10.13
✎
17:21
|
(20) да, а что тут такого.
Новый WSОпределения(<МестоположениеWSDL>, <ИмяПользователя>, <Пароль>, <Таймаут>) Описание: Создает определение веб-сервисов из WSDL файла. |
23 |
||
22
Jaap Vduul
15.10.13
✎
17:21
|
||||
23
Jaap Vduul
15.10.13
✎
17:22
|
24 |
|||
24
Infsams654
15.10.13
✎
17:26
|
(23) а, ну это да. Ну и это решаемо
|
|||
25
Jaap Vduul
15.10.13
✎
17:26
|
+22
Примеры самих пакетов см. в msdn http://msdn.microsoft.com/en-us/library/dd633696(v=exchg.80).aspx |
26 |
||
26
istekanov
16.10.13
✎
16:07
|
(25)
Спасибо огромное. Уже научился так читать новые письма. Осталось научиться читать вложения и высылать письма с вложениями. Как закончу выложу куски кода. |
|||
27
Новиков
16.10.13
✎
16:11
|
Как научишься отправлять письма с сохранением в папке "Отправленные" пользовательского аутлука, тоже выложи кусочек кода :)
|
38 |
||
28
istekanov
24.10.13
✎
12:42
|
Начинаю постить куски кода, даже возникла идея сделать платную обработку. )))
Кому чего не понятно пишите. Это я читаю новые письма отсортированные с первого по последнее по дате отправки: strXML = "<?xml version=""1.0"" encoding=""utf-8""?> |<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""; | xmlns:m=""http://schemas.microsoft.com/exchange/services/2006/messages""; | xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"">; |<soap:Body> | <m:FindItem Traversal=""Shallow""> | <m:ItemShape> | <t:BaseShape>Default</t:BaseShape> //| <t:BaseShape>IdOnly</t:BaseShape> | <t:AdditionalProperties> | <t:FieldURI FieldURI=""item:DateTimeSent""/> | </t:AdditionalProperties> | </m:ItemShape> | <m:IndexedPageItemView MaxEntriesReturned=""10"" BasePoint=""Beginning"" Offset=""0""/> | <m:Restriction> | <t:IsEqualTo> | <t:FieldURI FieldURI=""message:IsRead""/> | <t:FieldURIOrConstant> | <t:Constant Value=""false""/> | </t:FieldURIOrConstant> | </t:IsEqualTo> | </m:Restriction> | <m:SortOrder> | <t:FieldOrder Order = ""Ascending""> //| <t:FieldOrder Order = ""Descending""> | <t:FieldURI FieldURI=""item:DateTimeSent""/> | </t:FieldOrder> | </m:SortOrder> |"; strSearch = ""; Если strSearch <> "" Тогда strXML = strXML + "<m:Restriction>" + " <t:Contains ContainmentComparison=""IgnoreCase"" ContainmentMode=""Substring"">" + " <t:FieldURI FieldURI=""item:Subject"" />" + " <t:Constant Value=""" + strSearch + """/>" + " </t:Contains>" + "</m:Restriction>"; КонецЕсли; strXML = strXML + "<m:ParentFolderIds>" + "<t:DistinguishedFolderId Id=""inbox"">"; strEmail = ""; Если strEmail <> "" Тогда strXML = strXML + "<t:Mailbox><t:EmailAddress>" + strEmail + "</t:EmailAddress></t:Mailbox>"; КонецЕсли; strXML = strXML + "</t:DistinguishedFolderId>" + "</m:ParentFolderIds>" + "</m:FindItem>" + "</soap:Body>" + "</soap:Envelope>"; oXMLHTTP = СоздатьXMLHTTP(); //oXMLHTTP.setRequestHeader("Depth", "0"); //oXMLHTTP.setRequestHeader("SOAPAction", "http://webservices.belavia.by/GetAirportsList";); oXMLHTTP.send(strXML); Если oXMLHTTP.Status=200 тогда xmlВыборкаMessage = oXMLHTTP.responseXML.SelectNodes("//t:Message"); Для НомерПисьма=1 По xmlВыборкаMessage.Length Цикл Письмо = xmlВыборкаMessage.item(НомерПисьма-1); //Прочитано = Письмо.SelectNodes("t:IsRead").item(0).text; //Если Прочитано Тогда // // письмо уже прочитано // Продолжить; //КонецЕсли; Тема = Письмо.SelectNodes("t:Subject").item(0).text; ItemId = Письмо.SelectNodes("t:ItemId").item(0); Id = ItemId.getAttribute("Id"); ChangeKey = ItemId.getAttribute("ChangeKey"); // получаем и распаковываем вложение Status = ПолучитьВложение(Id, ChangeKey); Если Status = 200 тогда // вложения получили успешно Иначе // вложения не получили, письмо оставляем не прочтенным Продолжить; КонецЕсли; // делаем письмо прочитанным // *********** Status = УстановитьОтметкуОПрочтении(Id, ChangeKey); Если Status = 200 тогда // письму успешно установлен флаг о прочтении КонецЕсли; // *********** КонецЦикла; КонецЕсли; |
|||
30
istekanov
24.10.13
✎
12:51
|
Функция СоздатьXMLHTTP()
стрURL="https://ваш почтовый сервер/EWS/Exchange.asmx"; oXMLHTTP = Новый COMОбъект("MSXML2.XMLHTTP"); oXMLHTTP.open("POST", стрURL, 0, "имя пользака, если нужно, то с доменом", "пароль пользака"); oXMLHTTP.setRequestHeader("Content-Type", "text/xml"); Возврат oXMLHTTP; КонецФункции |
|||
31
istekanov
24.10.13
✎
12:53
|
А здесь я получаю вложения по Ид письма:
&НаСервере Функция ПолучитьВложение(Id, ChangeKey) // Получаем Id вложений strXML = "<?xml version=""1.0"" encoding=""utf-8""?> |<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""; | xmlns:m=""http://schemas.microsoft.com/exchange/services/2006/messages""; | xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"">; |<soap:Body> | <m:GetItem> | <m:ItemShape> | <t:BaseShape>IdOnly</t:BaseShape> | <t:AdditionalProperties> | <t:FieldURI FieldURI=""item:Attachments""/> | </t:AdditionalProperties> | </m:ItemShape> | <m:ItemIds> | <t:ItemId Id="""+Id+""" ChangeKey="""+ChangeKey+"""/> | </m:ItemIds> | </m:GetItem> |</soap:Body> |</soap:Envelope> |"; oXMLHTTP_Вложения = СоздатьXMLHTTP(); oXMLHTTP_Вложения.send(strXML); Если oXMLHTTP_Вложения.Status=200 тогда xmlВыборкаAttachments = oXMLHTTP_Вложения.responseXML.SelectNodes("//t:Attachments"); Для НомерВложения=1 По xmlВыборкаAttachments.Length Цикл Вложение = xmlВыборкаAttachments.item(НомерВложения-1); Вложение = Вложение.SelectNodes("t:FileAttachment").item(0); AttachmentId = Вложение.SelectNodes("t:AttachmentId").item(0).getAttribute("Id"); Name = Вложение.SelectNodes("t:Name").item(0).text; ЗагрузитьВложениеССервера(AttachmentId); КонецЦикла; КонецЕсли; Возврат oXMLHTTP_Вложения.Status; КонецФункции |
|||
32
istekanov
24.10.13
✎
12:54
|
Эта процедура загружает вложения, сохраняет на диск, распаковывает и выкладывает в папку ПутьФайлаДляСохранения
&НаСервере Функция ЗагрузитьВложениеССервера(AttachmentId) // при помощи функции GetAttachment получим по Id вложения сам файл вложения strXML = "<?xml version=""1.0"" encoding=""utf-8""?> |<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""; | xmlns:m=""http://schemas.microsoft.com/exchange/services/2006/messages""; | xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"">; |<soap:Body> | <m:GetAttachment> | <m:AttachmentShape/> | <m:AttachmentIds> | <t:AttachmentId Id="""+AttachmentId+"""/> | </m:AttachmentIds> | </m:GetAttachment> |</soap:Body> |</soap:Envelope> |"; oXMLHTTP_Вложения = СоздатьXMLHTTP(); oXMLHTTP_Вложения.send(strXML); Если oXMLHTTP_Вложения.Status=200 тогда xmlВыборкаAttachments = oXMLHTTP_Вложения.responseXML.SelectNodes("//m:Attachments"); Для НомерВложения=1 По xmlВыборкаAttachments.Length Цикл Вложение = xmlВыборкаAttachments.item(НомерВложения-1); Вложение = Вложение.SelectNodes("t:FileAttachment").item(0); Name = Вложение.SelectNodes("t:Name").item(0).text; Content = Вложение.SelectNodes("t:Content").item(0).text; ДвоичныеДанные = Base64Значение(Content); ДвоичныеДанные.Записать(ПутьФайлаДляСохранения+Name); ВременныйФайл = Новый Файл(ПутьФайлаДляСохранения+Name); Если ВременныйФайл.Расширение = ".zip" Тогда // распакуем файл ВременныйФайл = Новый ЧтениеZipФайла(ПутьФайлаДляСохранения+Name); ВременныйФайл.ИзвлечьВсе(ПутьФайлаДляСохранения); КонецЕсли; КонецЦикла; КонецЕсли; Возврат ""; КонецФункции |
|||
33
istekanov
24.10.13
✎
12:56
|
И не забываем установить отметку о прочтении:
&НаСервере Функция УстановитьОтметкуОПрочтении(Id, ChangeKey) strXML = "<?xml version=""1.0"" encoding=""utf-8""?> |<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""; | xmlns:m=""http://schemas.microsoft.com/exchange/services/2006/messages""; | xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"">; | <soap:Body> | <m:UpdateItem MessageDisposition=""SaveOnly"" ConflictResolution=""AutoResolve""> | <m:ItemChanges> | <t:ItemChange> | <t:ItemId Id="""+Id+""" ChangeKey="""+ChangeKey+"""/> | <t:Updates> | <t:SetItemField> | <t:FieldURI FieldURI=""message:IsRead""/> | <t:Message> | <t:IsRead>true</t:IsRead> | </t:Message> | </t:SetItemField> | </t:Updates> | </t:ItemChange> | </m:ItemChanges> | </m:UpdateItem> | </soap:Body> |</soap:Envelope> |"; oXMLHTTP_Обновление = СоздатьXMLHTTP(); oXMLHTTP_Обновление.send(strXML); Возврат oXMLHTTP_Обновление.Status; КонецФункции |
|||
34
istekanov
24.10.13
✎
13:02
|
Теперь давайте отошлем письмо со вложением. Нашел пока 1 рабочий способ:
1. создаем письмо и сохраняем его в черновиках 2. создаем прикрепление к письму и не забываем что поменялся RootItemChangeKey у письма когда оно повторно сохраняется со вложением. 3. ну и отсылаем письмо с ключиком SaveItemToFolder=""true"", который помогает сохраниться письму в папке отправленые. Ну а теперь немного кода: // Проверим что файл есть на диске, если его нет, тогда отменим отсылку письма Файл = Новый Файл(ПутьФайлаДляСохранения + ИмяФайлаДляОтправки + ".xml"); Если Не Файл.Существует() Тогда СообщениеПользователю = Новый СообщениеПользователю(); СообщениеПользователю.Текст = "Не найден файл обмена для отсылки: "+Файл.ПолноеИмя; СообщениеПользователю.Сообщить(); Возврат; КонецЕсли; // Упакуем файл ЗаписьZipФайла = Новый ЗаписьZipФайла(); ЗаписьZipФайла.Открыть(ПутьФайлаДляСохранения + ИмяФайлаДляОтправки + ".zip",,, МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Оптимальный, МетодШифрованияZIP.Zip20); ЗаписьZipФайла.Добавить(ПутьФайлаДляСохранения + ИмяФайлаДляОтправки + ".xml"); ЗаписьZipФайла.Записать(); // Сформируем Base64-encoded содержимое файла вложения. ДвоичныеДанные = Новый ДвоичныеДанные(ПутьФайлаДляСохранения + ИмяФайлаДляОтправки + ".zip"); Вложение = Base64Строка(ДвоичныеДанные); // создадим письмо и сохраним его в черновиках, чтобы прикрепить к нему файл ДанныеПисьма = СоздатьНовоеПисьмоВЧерновиках(); Если ДанныеПисьма = Ложь Тогда // письмо не создано. Ошибка СообщениеПользователю = Новый СообщениеПользователю(); СообщениеПользователю.Текст = "Ошибка создания письма в черновиках."; СообщениеПользователю.Сообщить(); Возврат; КонецЕсли; // Создадим прикрепление к созданному письму ДанныеПисьмаСПрикреплением = СоздатьПрикреплениеКПисьму(ДанныеПисьма, Вложение); Если ДанныеПисьмаСПрикреплением = Ложь Тогда // Прикрепление не создано. Ошибка СообщениеПользователю = Новый СообщениеПользователю(); СообщениеПользователю.Текст = "Ошибка создания прикрепления к письму в черновиках."; СообщениеПользователю.Сообщить(); Возврат; КонецЕсли; // Отправим сохраненное письмо Результат = ОтправитьПисьмоИзЧерновиков(ДанныеПисьма); Если Результат = Ложь Тогда // Сообщение не отправлено СообщениеПользователю = Новый СообщениеПользователю(); СообщениеПользователю.Текст = "Ошибка отправления сообщения с прикреплением."; СообщениеПользователю.Сообщить(); Возврат; КонецЕсли; |
38 |
||
35
istekanov
24.10.13
✎
13:02
|
1. создаем письмо и сохраняем его в черновиках
Функция СоздатьНовоеПисьмоВЧерновиках() ReplyTo = "scm-support@nekgroup.com"; ToRecipients = "scm-auto-test@nekgroup.com"; strXML = "<?xml version=""1.0"" encoding=""utf-8""?> |<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""; | xmlns:m=""http://schemas.microsoft.com/exchange/services/2006/messages""; | xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"">; |<soap:Body> //| <m:CreateItem MessageDisposition=""SendAndSaveCopy""> | <m:CreateItem MessageDisposition=""SaveOnly""> | <m:SavedItemFolderId> //| <t:DistinguishedFolderId Id=""sentitems"" /> | <t:DistinguishedFolderId Id=""drafts"" /> | </m:SavedItemFolderId> | <m:Items> | <t:Message> | <t:ItemClass>IPM.Note</t:ItemClass> | <t:Subject>[Leg7 Reports] from NEK</t:Subject> | <t:Body BodyType=""Text"">[Leg7 Reports] from NEK</t:Body> | <t:ToRecipients> | <t:Mailbox> | <t:EmailAddress>"+ToRecipients+"</t:EmailAddress> | </t:Mailbox> | </t:ToRecipients> | <t:IsRead>false</t:IsRead> | <t:ReplyTo> | <t:Mailbox> | <t:EmailAddress>"+ReplyTo+"</t:EmailAddress> | </t:Mailbox> | </t:ReplyTo> | </t:Message> | </m:Items> | </m:CreateItem> |</soap:Body> |</soap:Envelope>"; oXMLHTTP = СоздатьXMLHTTP(); oXMLHTTP.send(strXML); Если oXMLHTTP.Status=200 тогда // Успешное сохранение xmlВыборкаMessage = oXMLHTTP.responseXML.SelectNodes("//t:Message"); // Писем должно быть 1, поэтому получаем первое Для НомерПисьма=1 По xmlВыборкаMessage.Length Цикл Письмо = xmlВыборкаMessage.item(НомерПисьма-1); ItemId = Письмо.SelectNodes("t:ItemId").item(0); Id = ItemId.getAttribute("Id"); ChangeKey = ItemId.getAttribute("ChangeKey"); ДанныеПисьма = Новый Структура; ДанныеПисьма.Вставить("Id", Id); ДанныеПисьма.Вставить("ChangeKey", ChangeKey); // возвращаем ИД письма и ключа изменения Возврат ДанныеПисьма; КонецЦикла; // Что-то пошло не так Возврат Ложь; Иначе // Неудачное сохранение Возврат Ложь; КонецЕсли; КонецФункции |
38 |
||
36
istekanov
24.10.13
✎
13:03
|
2. создаем прикрепление к письму и не забываем что поменялся RootItemChangeKey у письма когда оно повторно сохраняется со вложением.
Функция СоздатьПрикреплениеКПисьму(ДанныеПисьма, Вложение) ReplyTo = "scm-support@nekgroup.com"; ToRecipients = "scm-auto-test@nekgroup.com"; strXML = "<?xml version=""1.0"" encoding=""utf-8""?> |<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""; | xmlns:m=""http://schemas.microsoft.com/exchange/services/2006/messages""; | xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"">; |<soap:Body> | <m:CreateAttachment> | <m:ParentItemId Id="""+ДанныеПисьма.Id+"""/> | <m:Attachments> | <t:FileAttachment> | <t:Name>"+ИмяФайлаДляОтправки+".zip"+"</t:Name> //| <ContentType/> //|<ContentId/> //|<ContentLocation/> //|<Size/> //|<LastModifiedTime/> //|<IsInline/> //|<IsContactPhoto/> | <t:Content>"+Вложение+"</t:Content> | </t:FileAttachment> | </m:Attachments> | </m:CreateAttachment > |</soap:Body> |</soap:Envelope>"; oXMLHTTP = СоздатьXMLHTTP(); oXMLHTTP.send(strXML); Если oXMLHTTP.Status=200 тогда // Успешное прикрепление xmlВыборкаMessage = oXMLHTTP.responseXML.SelectNodes("//m:ResponseMessages"); // Писем должно быть 1, поэтому получаем первое Для НомерПисьма=1 По xmlВыборкаMessage.Length Цикл Письмо = xmlВыборкаMessage.item(НомерПисьма-1); CreateAttachmentResponseMessage = Письмо.SelectNodes("m:CreateAttachmentResponseMessage").item(0); Ответ = CreateAttachmentResponseMessage.getAttribute("ResponseClass"); Если Ответ = "Success" Тогда // Вложение создано успешно Attachment = CreateAttachmentResponseMessage.SelectNodes("//m:Attachments").item(0); FileAttachment = Attachment.SelectNodes("t:FileAttachment").item(0); AttachmentId = FileAttachment.SelectNodes("t:AttachmentId").item(0); RootItemChangeKey = AttachmentId.getAttribute("RootItemChangeKey"); // Изменим Ключ текущих данных письма. Он изменился, так как мы добавили письму вложение ДанныеПисьма.ChangeKey = RootItemChangeKey; Возврат Истина; Иначе Возврат Ложь; КонецЕсли; КонецЦикла; // Что-то пошло не так Возврат Истина; Иначе // Неудачное прикрепление Возврат Ложь; КонецЕсли; КонецФункции |
38 |
||
37
istekanov
24.10.13
✎
13:04
|
3. ну и отсылаем письмо с ключиком SaveItemToFolder=""true"", который помогает сохраниться письму в папке отправленые.
Функция ОтправитьПисьмоИзЧерновиков(ДанныеПисьма) ReplyTo = "scm-support@nekgroup.com"; ToRecipients = "scm-auto-test@nekgroup.com"; strXML = "<?xml version=""1.0"" encoding=""utf-8""?> |<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/""; | xmlns:m=""http://schemas.microsoft.com/exchange/services/2006/messages""; | xmlns:t=""http://schemas.microsoft.com/exchange/services/2006/types"">; |<soap:Body> | <m:SendItem SaveItemToFolder=""true""> | <m:ItemIds> | <t:ItemId Id="""+ДанныеПисьма.Id+""" ChangeKey="""+ДанныеПисьма.ChangeKey+"""/> | </m:ItemIds> | <m:SavedItemFolderId> | <t:DistinguishedFolderId Id=""sentitems"" /> | </m:SavedItemFolderId> | </m:SendItem> |</soap:Body> |</soap:Envelope>"; oXMLHTTP = СоздатьXMLHTTP(); oXMLHTTP.send(strXML); Если oXMLHTTP.Status=200 тогда // Успешное сохранение xmlВыборкаMessage = oXMLHTTP.responseXML.SelectNodes("//m:ResponseMessages"); // Писем должно быть 1, поэтому получаем первое Для НомерПисьма=1 По xmlВыборкаMessage.Length Цикл Письмо = xmlВыборкаMessage.item(НомерПисьма-1); SendItemResponseMessage = Письмо.SelectNodes("m:SendItemResponseMessage").item(0); ResponceClass = SendItemResponseMessage.getAttribute("ResponseClass"); Если ResponceClass = "Error" Тогда // Письмо почему-то не отправилось Возврат Ложь; КонецЕсли; // Ваууу письмо создалось, прикрепилось и ушло!!! Странно, наверное я что-то сделал не так, обратитесь к разработчику и он придумает новый глюк Возврат Истина; КонецЦикла; // Что-то пошло не так Возврат Ложь; Иначе // Неудачное сохранение Возврат Ложь; КонецЕсли; КонецФункции |
38 |
||
38
istekanov
24.10.13
✎
13:08
|
||||
39
katc
24.10.13
✎
14:16
|
strEmail = "";
Если strEmail <> "" Тогда strXML = strXML + "<t:Mailbox><t:EmailAddress>" + strEmail + "</t:EmailAddress></t:Mailbox>"; КонецЕсли; как то по индусски |
40 |
||
40
istekanov
24.10.13
✎
16:20
|
(39)
Это затычка на будущее чтобы опять не тратить время на поиски. Если не понятно, то вместо strEmail = ""; нужно вписать strEmail = "емэйл для отбора"; и тогда будет получаться почта с фильтром по емэйлу. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |