|
Email CDO.Message через Microsoft Exchange | ☑ | ||
---|---|---|---|---|
0
inspam
10.04.13
✎
19:48
|
Прошерстил весь форум и не только, но не смог найти отправку через CDO используя протокол Microsoft Exchange
Т.е. во всех ветках рассматривают метод SMTP: iConf.fields(cdoSendUsingMethod).value = cdoSendUsingPort; // Где cdoSendUsingPort=2 Но я не нашел кто бы использовал cdoSendUsingExchange=3 Накодил, что смог, но получаю такое сообщение: Произошла исключительная ситуация (ADODB.Fields): Fields update failed. For further information, examine the Status property of individual field objects. У меня вопросы - я иду в правильном направлении? И что я делаю не так? Предупреждаю вопросы, относительно того, почему я не использую прочие методы типа "MSMAPI.MAPIMessages", отправка через SMTP и "1С Почта" Отвечаю сразу: Почту нужно отправлять &НаСервере. Порты закрыты, в т.ч. на Exchange. Письмо=Новый COMОбъект("CDO.Message"); Письмо.to=Кому; Письмо.from=Отправитель; Письмо.cc=Копия; Письмо.bcc=СкрКопия; Письмо.Subject=Тема; Письмо.TextBody=Текст; cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing" ; iConf = Новый COMОбъект("CDO.Configuration"); iConf.fields(cdoSendUsingMethod).value = 3; //cdoSendEmailAddress = "http://schemas.microsoft.com/cdo/configuration/sendemailaddress" ; //cdoSendPassword = "http://schemas.microsoft.com/cdo/configuration/sendpassword" ; //cdoSendUserName = "http://schemas.microsoft.com/cdo/configuration/sendusername" ; //cdoSMTPAuthenticate = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ; //cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver"; //cdoSMTPServerPort = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"; //cdoSMTPUseSSL = "http://schemas.microsoft.com/cdo/configuration/smtpusessl"; //iConf.fields(cdoSMTPServer).value = "cdoSMTPServer"; //iConf.fields(cdoSMTPServerPort).value = 445; //iConf.fields(cdoSMTPAuthenticate).value = 1; //iConf.fields(cdoSendUserName).value = "user.user"; //iConf.fields(CdoSendPassword).value = "123"; //iConf.fields(cdoSendEmailAddress).value = """[email protected]"" <[email protected]>"; //iConf.fields(cdoSMTPUseSSL).value = 1; //Secure Sockets Layer mailboxurl = "http://schemas.microsoft.com/cdo/configuration/mailboxurl"; iConf.fields(mailboxurl).value = "http://exchsrv.com/Exchange/user.user"; iConf.fields(cdoSendUserName).value = "[email protected]"; iConf.fields(CdoSendPassword).value = "123"; iConf.fields.update(); Письмо.Configuration = iConf; Письмо.Send(); |
|||
1
inspam
10.04.13
✎
19:49
|
Описание cdoSendUsingMethod
//cdoSendUsingPickup 1 Send message using the local SMTP service pickup directory. //cdoSendUsingPort 2 Send the message using the network (SMTP protocol over the // network). //cdoSendUsingExchange 3 Send the message using the Exchange mail submission URI. // This URI is found in the user's // urn:schemas:httpmail:sendmsg mailbox folder property. |
|||
2
Voronve
10.04.13
✎
19:55
|
(0) Забей. Тоже не нашел ничего. Скрытую копию отправляю в эксченджь
|
|||
3
inspam
10.04.13
✎
20:08
|
(2) Каким образом?
|
|||
4
Новиков
10.04.13
✎
22:39
|
(0) ну в логах екчейнджа то погляди. Начни с простого - сессия то хоть устанавливается или нет, в момент твоей отправки? Или ты даже до этого еще не дошел.
По сабжу конкретно, темой 3 сам интересовался, но особо не расковырял. Если расковыряешь чего - не забудь отписаться. Хотя тут алгоритм, повторюсь, один. Открыл консоль на екчейндже, ткнулся точкой останова на инициализацию и смотришь - по строчке выполняешь, и логи читаешь. Я, по крайне мере, так отлаживался. |
|||
5
фобка
10.04.13
✎
22:43
|
писал отправку/получение через outlook redemption
|
|||
6
фобка
10.04.13
✎
22:45
|
(с) фоб
Procedure SendErrMail() sFileName = "d:\WORK\stock_errors"+Format(CurDate(),"DYYYYMMDD")+".xls"; oA = CreateObject("Outlook.Application"); oItem = CreateObject("Redemption.SafeMailItem"); NameSpace = oA.GetNamespace("MAPI"); NameSpace.Logon(); pItem = oA.CreateItem(0); pItem.Subject = "Отчет о проблемах в БД стоков"; pItem.Body = "В стоковых файлах обнаруженны некорректные данные. Письмо сформировано автоматически."; pItem.SentOnBehalfOfName = "info.***@****.ru"; //отправка от группы //sAdress = "mikhail.ivanov@****.ru;"; //pItem.To = sAdress; //pItem.CC = TrimAll(Const.АдресаРассылкиДемона); oItem.Item = pItem; oItem.Attachments.Add(sFileName); oLst = глРазложить(TrimAll(Const.АдресаРассылкиДемона),";"); For i = 1 To oLst.GetListSize() Do oItem.Recipients.Add(oLst.GetValue(i)); EndDo; oItem.Recipients.ResolveAll(); oItem.Send(); NameSpace.Logoff(); EndProcedure |
|||
7
фобка
10.04.13
✎
22:48
|
+6 билиотека здесь http://www.dimastr.com/redemption/home.htm
|
|||
8
mikecool
10.04.13
✎
23:17
|
(6) мне dialmail больше нравится )
|
|||
9
mikecool
10.04.13
✎
23:17
|
+8 вот только через шняшу ей не отправлял
|
|||
10
Новиков
10.04.13
✎
23:17
|
(6) а в чем цимес от юзанья этого кода? В том, что обходится система безопасности аутлука? Т.е. почему ты просто чем аутлук по кому не бузовал? Зачем вот это oItem = CreateObject("Redemption.SafeMailItem") подъюзал?
|
|||
11
фобка
11.04.13
✎
11:52
|
10 аутлук требует акцепта каждый раз при обращении (не экспресс)
|
|||
12
фобка
11.04.13
✎
11:53
|
(8) Миш, он работает с эксчейнджем?
|
|||
13
inspam
11.04.13
✎
15:02
|
(4) Тут проблема в том, что эксченж стоит не у нас и юзают его зарубежные дядьки. Так что с доступом и отладкой - облом
|
|||
14
sapphire
12.04.13
✎
15:17
|
При
iConf = Новый COMОбъект("CDO.Configuration"); iConf.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").value = 3; Произошла исключительная ситуация (ADODB.Fields): Fields update failed. For further information, examine the Status property of individual field objects. Эта ошибка возникает если неверно указан путь к почтовому ящику. |
|||
15
inspam
16.04.13
✎
14:28
|
(14) а можно пруф?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |