Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2010, 22:09   #1
justS
 
Регистрация: 03.04.2010
Сообщений: 4
По умолчанию немного не Excel, но... Vb+outlook+cdo.message что надо писать там?

Ситуация:
работаю в банке. почта идет через Exchange сервер. клиент Outlook. посылать на внешнюю почту могу. НО.. почему то если ставить перенаправление почты из Outlook'а то письма не идут. IT служба естественно не чешется ни хрена. А надо пересылать некоторые письма которые приходят уже после окончания рабочего дня на домашний ящик.
соответственно надо сделать макрос чтобы делал новое письмо и посылал.
проблема с обычным способом описанным тут http://support.microsoft.com/kb/161088:
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
в том что для того чтобы послать требует подтверждения вручную.
без подтверждения возможно через CDO.Message
так вот написана примерна такая фигня:
Sub tst()
Dim Msg ' As CDO.Message
Dim Config ' As CDO.Configuration

' Create message and configuration objects.
Set Msg = CreateObject("CDO.Message")
Set Config = CreateObject("CDO.Configuration")

' Get the message configuration object.
Set Config = Msg.Configuration

' Set the sendusing field to 'cdoSendUsingExchange'.
Config("http://schemas.microsoft.com/cdo/configuration/sendusing") = 3

' Set the mailboxurl field to the specified mailbox URL.
Config("http://schemas.microsoft.com/cdo/configuration/mailboxurl") = "http://сервер/Exchange/ник/"

' Update the fields.
Config.Fields.Update

так вот в дебаге на Update все время говорит:
Fields update failed/ For further information, examine the Status property of individual field object

сервер брался из:
Панель управления-почта-учетные записи-свойства MIcrosoft Exchange Server
ник пытался брать и оттуда и то что до собаки в корпоративной почте

поискал по инету - как то особо никто не пишет...
может кто в курсе что конкретно там вообще надо написать чтобы прошло?
justS вне форума Ответить с цитированием
Старый 13.04.2010, 22:25   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте этот код - вдруг получится...
http://programmersforum.ru/showpost....2&postcount=29
EducatedFool вне форума Ответить с цитированием
Старый 13.04.2010, 23:20   #3
justS
 
Регистрация: 03.04.2010
Сообщений: 4
По умолчанию

в данном примере мне не совсем понятно что нужно писать в месте
.Item(cdoConfigURL & "smtpserver") = smtpserver
.Item(cdoConfigURL & "sendusername") = sendusername
.Item(cdoConfigURL & "sendpassword") = sendpassword
еще раз - отправление почты идет через Exchange - какой там пароль ставить и какой сервер?

зы естественно 25 порт у меня закрыт так что послать сам через mail.ru я не могу

Последний раз редактировалось justS; 13.04.2010 в 23:22.
justS вне форума Ответить с цитированием
Старый 13.04.2010, 23:36   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Если Outlook получает письма.Они считаются не прочитаными.

Макрос ищет в папке Outlookа не прочитаные письма.выбирает с нужной темой,или по другому признаку.Далее как вложение,или можно прочитать макросом текс письма отправляет вам на домашний ящик.Но для этого создаете еще себе ящик ,и через него отправляете на свой.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 13.04.2010, 23:46   #5
justS
 
Регистрация: 03.04.2010
Сообщений: 4
По умолчанию

извините вы читали что я написал вообще???
естесвенно я пытаюсь создать новое письмо макросом.
естественно я пытаюсь его отправить макросом.
проблема в том что просто письмо я создать могу, но в этом случае необхолдимо подтверждение отправки
а CDO письмо пока создать не могу потому что непонятна конфигурация.
про второй ящик вообще не понял что вы хотели сказать
кто мне даст сделать второй ящик в банке???? и нахрен мне он там нужен...
justS вне форума Ответить с цитированием
Старый 14.04.2010, 02:06   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Я прекрасно понимаю о чем идет речь.
Макрос на чтение письма
Код:
Private Sub  Mail()
     Dim m As New Outlook.Application
     Dim Text As String
     
        Dim OLObject As Outlook.Namespace
     Set OLObject = m.GetNamespace("MAPI")
   
        Dim inbox As Outlook.MAPIFolder
      inbox = OLObject.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox)
       
      Dim msg As Outlook.MailItem
    For Each msg In inbox.Items
            Dim str As String
           str = msg.Subject
            If str = "нужная тема" And msg.UnRead Then 'Нужная тема письма и оно не прочитано
                msg.UnRead = False' Ставим галочку,что письмо прочитали
                Text = msg.Body ' Читаем текс письма в переменную
            End If
        Next
        
      m.Quit    
  If text = "" Then Exit Sub
  My_send (text)

End Sub
Макрос на отправку на ваш ящик прочитаного письма,через вновь созданый почтовый ящик.Все дело в том,что этим методом самому себе почту отправить нельзя

Код:
Function My_send(text As String)
    Set cdoConfig = CreateObject("CDO.Configuration")
    With cdoConfig.Fields
    .Item(cdoSendUsingMethod) = cdoSendUsingPort
       .Item(cdoSMTPAuthenticate) = 1
       .Item(cdoSMTPServer) = "mail.rambler.ru" ' Ваш SMTPServer нового созданого ящика например на rambler.ru
       .Item(cdoSendUserName) = "Vasja.Pupkin77" ' Ваша учетная запись
        .Item(cdoSendPassword) = "111111" ' Ваш  пароль
        .Update
    End With
    Set cdoMessage = CreateObject("CDO.Message")
 
    With cdoMessage
       On Error Resume Next
    
        Set .Configuration = cdoConfig
        .From = "Vasja.Pupkin77@rambler.ru"
        
        .To = "Vasja.Pupkin1@info.com" ' Ваш почтовый ящик на который придет письмо
        .Subject = "Здесь тема письма"
        .TextBody = text
        .Send
    End With
  

End Function
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 14.04.2010, 11:17   #7
justS
 
Регистрация: 03.04.2010
Сообщений: 4
По умолчанию

макрос на чтение письма мне не нужен, потому что у меня он уже есть и прекрасно обрабатывает письма.
я просто его не приводил так как по нему у меня нет никаких вопросов.
с вашим вторым макросом -
ну во первых тупо копируя его в макросы Outlook и запуская я получаю ошибку уже на строке .Item(cdoSendUsingMethod) = cdoSendUsingPort

и отслеживая переменные вижу - cdoSendUsingPort = Empty
во вторых - если чесно то даже если заработало бы я не понимаю через что конкретно он пытается его послать?
через сервер rambler.ru в примере?? но так 25 порт доступа у меня закрыт к любым внешним серверам.
а внутренняя почта идет через Exchange сервер и что для него нужно писать мне непонятно
justS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверьте программу плиз и исправьте что там не так Gronex Помощь студентам 3 21.05.2009 17:01
проблемка с кодом, результат получается немного не такой как надо hen Помощь студентам 3 24.04.2009 15:11
Что писать? MAKEDON Свободное общение 9 08.08.2008 18:15
Помогите немного если не сложно,оч надо(Pascal) Bremen Помощь студентам 7 27.07.2008 12:52
надо немного дописать... Acid Помощь студентам 2 21.05.2007 17:32