Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Закладки » Программирование для Exchange

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

YaroslavOne



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Давайте обмениваться опытом программирования под Exchange.
 
Начал работать с Event Sink на Exchange 2003.
 
И возникли следующие вопросы:
 
Ситуация - ставлю OnSave на общую папку, который должен посылать все получаемы сообщения на определенный smtp адрес, находящийся внутри Exchange.
В папку помещается сообщение в виде Outlook RTF. OnSave отрабатывает и посылает мне это сообщение... НО приходит оно ко мне в виде HTML. Это плохо.
пример кода:
 
Sub ExStoreEvents_OnSave(pEventInfo, bstrURLItem, lFlags)
 
  Set msgobj = CreateObject("CDO.Message")
  msgobj.DataSource.Open bstrURLItem
  set msgobj1 = createobject("CDO.Message")  
  set stm = CreateObject("ADODB.Stream")  
  set stm = msgobj.getstream()  
 
  msgobj1.datasource.openobject stm, "_Stream"
  msgobj1.To="MyAddress@domain.ru"
  rtfbody = msgobj.fields("http://schemas.microsoft.com/mapi/proptag/x10090102")  
  msgobj1.fields("http://schemas.microsoft.com/mapi/proptag/x10090102") = rtfbody
  msgobj1.fields.Update
  msgobj1.send
 
End Sub
 
 
И второй вопрос:
На общей папке вешую OnSyncDelete, который должен делать копии удаляемых писем в нужную папку (например - Deleted). При копировании сообщения в папку Deleted оно помещается туда с датой удаления а не с датой исходного письма. Как исправить дату?
Использовать метод MoveRecord не могу, так как он в свою очередь вызывает OnSyncDelete.

Всего записей: 326 | Зарегистр. 30-04-2003 | Отправлено: 15:35 13-02-2007
YaroslavOne



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
При копировании сообщения в папку Deleted оно помещается туда с датой удаления а не с датой исходного письма

Да. А поля времени только на Read. Значит придется вводить дополнительное поле, в которое помещать дату исходного письма, а на общей папке настраивать Вид.

Всего записей: 326 | Зарегистр. 30-04-2003 | Отправлено: 15:13 14-02-2007
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кто-то как-то спрашивал, как вырезать заголовки из писем на front-end:
Код на C#
Подробнее что это тут: http://support.microsoft.com/?kbid=894286
Понадобятся библиотеки:
cdosys.dll
scrrun.dll
seo.dll

----------
Если не получается с первого раза - прочти инструкцию. (с)
"Откуда нам знать, что такое война, если мы не знаем мира..."(с)
Записки

Всего записей: 3799 | Зарегистр. 16-07-2004 | Отправлено: 15:37 14-02-2007 | Исправлено: FreemanRU, 15:37 14-02-2007
yurynok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Private Sub SendMailMessage
 
 
 
            Dim objNewMessage
 
            Dim objRecipient
 
            Dim objSession
 
                         
 
            On error resume next
 
             
 
            Set objSession=Nothing
 
            Set objNewMessage=Nothing
 
            Set objRecipient=Nothing
 
                         
 
            Set objSession=EventDetails.Session
 
             
 
            Set objNewMessage = objSession.Outbox.Messages.Add
 
            objNewMessage.Subject = "тема письма"
 
            objNewMessage.Text = g_bstrDebug
 
            Set objRecipient = objNewMessage.Recipients.Add
 
            objRecipient.Name = "user@domain.ru"  
 
            objRecipient.Resolve
 
            objNewMessage.Update
 
            objNewMessage.Send
 
             Set objNewMessage=Nothing
 
            Set objRecipient=Nothing
                       
 
end sub
 
отправка письма.

Всего записей: 1367 | Зарегистр. 21-03-2003 | Отправлено: 15:45 14-02-2007
Qzero



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вопрос:  
Имеем Win2k3, MS Exchange  
 
Есть три пользователя test1,test2,test3. На Exchange первые 2 имеют соответственно ящики test1@office.local,test2@office.local . При этом эти же пользователи имееют, к примеру, ящики на mail.ru. Соединяются с майл.ру по IMAP. Как сделать так чтобы, допустим, пользователь test1 шлет письмо на test2@office.local, а копию на test3@yandex.ru. и  письмо дошло до test2 c test1@office.local, а на test3 c test1@mail.ru  
 
Надеюсь я понятно свою задумку изложил )

Всего записей: 83 | Зарегистр. 02-05-2006 | Отправлено: 01:32 15-02-2007
YaroslavOne



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Qzero
 
хе...
вот такое предложение:
сделай для test3 почтовый ящик в Exchange.
Как только письмо попадает в этот почтовый ящик - подменять адрес отправителя и адрес получателя и отсылать сообщение.
на папку incoming в этом майлбоксе вешаешь Event Sink OnSave и делаешь что надо.

Всего записей: 326 | Зарегистр. 30-04-2003 | Отправлено: 12:34 15-02-2007
Qzero



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
так суть не только в том, чтобы адрес отправителя test1 для test3 был test1@mail.ru, но и чтобы письмо физически прошло через майл.ру.

Всего записей: 83 | Зарегистр. 02-05-2006 | Отправлено: 16:08 15-02-2007
YaroslavOne



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Qzero
так я и говорю - подмени адрес отправителя и получателя и ПОШЛИ письмо!
 
<SCRIPT LANGUAGE="VBScript">
 
Sub ExStoreEvents_OnSave(pEventInfo, bstrURLItem, lFlags)
' Event Sink Flags  
Const EVT_REPLICATED_ITEM= 4 ' The item is being replicated from another location.
 
if Not (lFlags and EVT_REPLICATED_ITEM) then
 
    Set msgobj = CreateObject("CDO.Message")
    msgobj.DataSource.Open bstrURLItem
    set msgobj1 = createobject("CDO.Message")  
    set stm = CreateObject("ADODB.Stream")  
    set stm = msgobj.getstream()  
 
    msgobj1.datasource.openobject stm, "_Stream"
 
    msgobj1.from="yoursendername@domain.com"
    msgobj1.to="yourrecipientname@mail.ru"
 
    rtfbody = msgobj.fields("http://schemas.microsoft.com/mapi/proptag/x10090102")  
    msgobj1.fields("http://schemas.microsoft.com/mapi/proptag/x10090102") = rtfbody
    msgobj1.fields.Update
    msgobj1.send
 
    stm=Nothing
    msgobj1=Nothing
    msgobj=Nothing
end if
End Sub
 
</SCRIPT>
 
 
типа так.

Всего записей: 326 | Зарегистр. 30-04-2003 | Отправлено: 17:34 15-02-2007
Qzero



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YaroslavOne
 
Создавать для test3 ящик на MS Exch не серьезно, т.к. под этим test3 может быть кто угодно и этих "кто угодно" бесконечно много. Проще говоря нужно что бы внутрення почта ходила внутри, а если копия письма шлется еще и на внешний любой адрес, то отпрвлялась через внешнией сервер. Вот. Т.е. чтобы не было необходимости в оутлуке держать две учетки: одну для внутренней а другую для внешней почты.

Всего записей: 83 | Зарегистр. 02-05-2006 | Отправлено: 18:38 15-02-2007
yurynok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Qzero
ты просишь создать открытый релей, ты не спамер случайно?
 
P.S. как они меня достали, спамеры....

Всего записей: 1367 | Зарегистр. 21-03-2003 | Отправлено: 21:01 15-02-2007
YaroslavOne



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yurynok
 
скорее всего не совсем так. Просто какая-то фирма временная и хочет остаться анонимной.
 
Qzero
 
Подобная проблемка решалась мною другим путем:
 
1. Создавался на внешнем хостинге домен и smtp адрес для него.
2. вся почта приходящая на этот адрес - пересылалась в Exchange
3. Внутренняя почта ходила по Exchange
4. если посылалась внешка - имя отправителя подменялось на smtp опубликованный на хостинге и посылалось. (посредством Event Sink на SMTP сервисе, как в посте от FreemanRU, только следует переработать их)
 
тут конечно есть возможность отследить отправителя - смотреть служебные поля писем... но обычно этого НЕ делают

Всего записей: 326 | Зарегистр. 30-04-2003 | Отправлено: 11:20 16-02-2007 | Исправлено: YaroslavOne, 11:26 16-02-2007
Qzero



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 ты не спамер случайно?

нет не спамер
У нас филиал, а у головном офиса есть домен и smtp адрес для него и они требуют чтобы почта ходила через их сервер.  Там вся почта и хранится.
 
И так... Еще раз Имеем у себя в офисе MS Exch, внешний почтовый сервер главного офиса. К нему нет никакого доступа для администрирования( поэтому я в примере взял майл.ру). На нем лежит вся внешняя почта. Связь с почтой только по ИМАП.
 
 
ЗЫ Может я что-то не так понял.... просто голова жутка болит...

Всего записей: 83 | Зарегистр. 02-05-2006 | Отправлено: 11:59 16-02-2007
YaroslavOne



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
вязь с почтой только по ИМАП.  

 
хе. Exchange не умеет делать IMAP коннекторы. только SMTP.

Всего записей: 326 | Зарегистр. 30-04-2003 | Отправлено: 12:34 16-02-2007
yurynok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Qzero

Цитата:
они требуют чтобы почта ходила через их сервер

сделай коннектор и пропиши в нем форвард на сервер в головном офисе. А они пусть сделают форвард для твоей почты на твой сервер.
1. Если ты хочешь скрывать почту от головного офиса, то использовать web интерфейс любого бесплатно почтовика.
2. Зарегиструровать новый домен заплатить, зарегистрировать mx на новый домен на IP твоего сервера, сделать доп записи для нового  домена у себя и научить пользователей использовать поле ОТ при отправке сообщений.

Всего записей: 1367 | Зарегистр. 21-03-2003 | Отправлено: 13:41 16-02-2007
YaroslavOne



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Черте что!
 
Этот ... Visaul Basic Script!!! Жуть!
 
надо получить ID сообщения. Получаю - это массив байт. А обработать не могу. Так тип данных не поддерживается Visaul Basic Script.

Всего записей: 326 | Зарегистр. 30-04-2003 | Отправлено: 18:41 19-02-2007
YaroslavOne



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кому интересно - как получить EntryID письма
 
http://www.kbalertz.com/kb_298401.aspx

Всего записей: 326 | Зарегистр. 30-04-2003 | Отправлено: 10:55 21-02-2007
YaroslavOne



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Начинающим писателям Event Sink читать
http://msdn2.microsoft.com/en-us/library/ms877303.aspx
http://msdn2.microsoft.com/en-US/library/ms980332.aspx
http://msdn2.microsoft.com/en-us/library/aa529689.aspx

Всего записей: 326 | Зарегистр. 30-04-2003 | Отправлено: 09:57 22-02-2007
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Закладки » Программирование для Exchange


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru