Имя: Пароль:
1C
1С v8
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) а можно пруф?