Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вытаскивание адреса получателя из Outlook с помощью Basic  (Прочитано 22331 раз)
0 Пользователей и 8 Гостей смотрят эту тему.
Arata
Интересующийся

ru
Offline Offline

« : 31-05-2010 19:38 » 

Подскажите, пожалуйста, какой код мне нужно написать, чтобы при отправке письма в Outlook 2007 адрес полуателя записывался в какой-нибудь текстовый файл. Наверняка с помощью VBA или VBScript это можно сделать в несколько строчек, но в Бэйсике я дуб дубом, чисто на институтском уровне помню. Кто знает, нипишите код, пожалуйста Улыбаюсь
Записан
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 01-06-2010 07:12 » 

в общем с случае делается так:

1. открывается новое сообщение
2. форма открывается на разработку (в ленте должна быть вкладка "Разработчик", на ней - педаль "Конструктор - эта форма")
3. в конструкторе открываете VisualBasic, вылезет окно со скриптами
4. слева в дереве будет дефолтовый скрипт ThisOutLook Session
5. щёлкаете на него, вывалится рыба для процедуры:

Код:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
End Sub

это событие по умолчанию, ItemSend, возникающее всегда, когда отправляется письмо. в него можно прописать, например:

Код:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    If MsgBox(Item.Subject, vbYes, "Sample") = vbYes Then
    End If
End Sub

 - здесь при отправке письма его тема всегда выводится на экран в диалоговом окне.

6. всё закрываете, на все вопросы сохранить отвечаете да.

соответственно, вам надо разобратся как из Item (а это и есть объект, представляющий собой письмо) вытащить поле "Кому" и засунуть в файл. тут уже пускай спецы по VB подскажут, я в этом не волоку. и посмотрите справку, она достаточно здравая и вся с примерами.
Записан

Arata
Интересующийся

ru
Offline Offline

« Ответ #2 : 01-06-2010 07:46 » 

Нууу, спасибо конечно, за подробный ответ, только до этого я тоже уже дошел. Мне нужен был именно код. Всего одна или две строчки. Кто-нибудь, подскажите.
« Последнее редактирование: 01-06-2010 10:29 от Sel » Записан
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 01-06-2010 08:06 » 

ну, в файл, допустим, можно и так:

Код:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
  F = FreeFile
  Open "c:\outlook.log" For Append As #F
  Print #F, Item.Subject
  Close #F
End Sub
,

но вот как из Item список адресов вытащить - я лично не в теме.
Записан

x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #4 : 01-06-2010 08:16 » 

а ларчик просто открывался - оказывается, это Item.To Улыбаюсь

Записан

Arata
Интересующийся

ru
Offline Offline

« Ответ #5 : 01-06-2010 09:08 » new

Спасибо. Попробую, отпишусь Улыбаюсь
Записан
Arata
Интересующийся

ru
Offline Offline

« Ответ #6 : 01-06-2010 10:30 » 

x77, огромнео спасибо. Работает отлично, именно так, как мне нужно  Улыбаюсь)
Записан
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #7 : 01-06-2010 10:50 » 

не во что Ага
Записан

Arata
Интересующийся

ru
Offline Offline

« Ответ #8 : 01-06-2010 12:37 » 

Ну ё-моё   Жаль
Все работало отлично до первого перезапуска Outlook. После того, как я закрыл и снова открыл Outlook, скрипт работать перестал. Он остался, но больше не работает. Не пойму, в чем дело  Не понял
Записан
Arata
Интересующийся

ru
Offline Offline

« Ответ #9 : 01-06-2010 12:46 » 

Все, я сам дурак. Дело было в настройках безопасности макросов. Я там поигрался немного, от этого и проблема была. Сейчас разрешил все макросы на выполнение и сразу заработало  Улыбаюсь
Записан
Arata
Интересующийся

ru
Offline Offline

« Ответ #10 : 01-06-2010 15:56 » 

Продолжаю тему   С ума сойти...
Если контакт получателя уже имеется в Outlook, то в файл записывается его имя, а не адрес, например есть адрес vasya@mylo.ru, и есть контакт Вася с этим мылом. Если перед отправкой вставить в поле Кому этого Васю, то в файле outlook.log так и запишется "Вася", а не "vasya@mylo.ru".
Есть какие-нибудь идеи? Сейчас пока поищу, какие еще есть атрибуты события ItemSend, но на вашу помощь тоже рассчитываю, ибо в Бэйсике полный профан.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 01-06-2010 18:37 » 

кури
http://msdn.microsoft.com/en-us/library/bb147566.aspx
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Arata
Интересующийся

ru
Offline Offline

« Ответ #12 : 02-06-2010 12:00 » 

Не фига не помогло. Может если еще денек посижу за переводом различных текстов с этого сайта, то в конце концов и найду ответ, но это не дело. Для того и пишу на форум, что получить максимально быстрый ответ от того, кто его знает.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 02-06-2010 12:23 » 

Цитата
Using the MailItem Object
Use the CreateItem method to create a MailItem object that represents a new mail message. The following example creates and displays a new mail message.

Set myOlApp = CreateObject("Outlook.Application")
Set myItem = myOlApp.CreateItem(olMailItem)
myItem.Display
      
Use Items (index), where index is the index number of a mail message or a value used to match the default property of a message, to return a single MailItem object from an Inbox folder. The following example sets the current folder as the Inbox and displays the second mail message in the folder.

Set myOlApp = CreateObject("Outlook.Application")
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
myFolder.Display
Set myItem = myFolder.Items(2)
myItem.Display
      
Remarks
If a program tries to reference any type of recipient information by using the Outlook object model, a dialog box is displayed that asks you to confirm access to this information. You can allow access to the Address Book or recipient information for up to ten minutes after you receive the dialog box. This allows features, such as mobile device synchronization, to be completed.

You receive the confirmation dialog box when a solution tries to programmatically access the following properties of the MaiItem object:

SentOnBehalfOfName
SenderName
ReceivedByName
ReceivedOnBehalfOfName
ReplyRecipientNames
To
CC
BCC
Body
HTMLBody
Recipients
SenderEmailAddress
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Arata
Интересующийся

ru
Offline Offline

« Ответ #14 : 02-06-2010 20:03 » 

Опять же ты просто привел дословный текст, а как это применить, не указал. Я тоже это читал и накурился этого добра уже выше крыши. Я уже забил на это, потому что долго и непродуктивно. Изменил условия задачи, так что мне теперь достаточно свойства Item.To
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 02-06-2010 20:08 » 

Arata, т.е. ты считаешь, что тебе слабо вывести все эти "подозреваемые" поля, чтобы проанализировать самостоятельно, и считаешь, что это должны сделать здесь на форуме.
Тебе мало, что тебе написали код, ткнули куда смотреть...
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Arata
Интересующийся

ru
Offline Offline

« Ответ #16 : 03-06-2010 07:10 » 

Во-первых, я проверил все эти поля и это все лажа. Сам бы проверил, прежде чем давать совет.
Во-вторых, я считаю, что "это должны сделать здесь на форуме". Ты очень догадлив. Тыкать во всякие MSDN может каждый...
А полезный код написал только x77, при чем здесь твои возмущения Sla, я не пойму.
Записан
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 03-06-2010 07:22 » 

Offtopic:
Arata, потому что на форуме помагают, а не делают за тебя - разницу чувствуешь? Наша задача - натолкнуть тебя на правильную мысль, а разобраться ты должен сам. Ткнуть в правильный MSDN - тоже нужно уметь. Тебе же не написали адрес http://msdn.microsoft.com. Так что претензия не принимается Улыбаюсь


Еще одна мысль: то, что возвращет поле To - может быть не строка, а объект и у него могут быть свои свойства (например email, name, ...) Попробуй проверить
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 03-06-2010 07:43 » 

Arata, а я не Х77, у меня к счастью, времени, пока, чуть побольше чем у него.

Я даже не сильно напрягаюсь.
Ставлю точку останова на входе в процедуру и в окне wathes анализирую объект Item
и прекрасно нахожу то что мне нужно, впрочем и то что нужно и тебе
список Recipients

ps на форуме никто никому ничего не должен. Здесь за помощь денег не требуют.

ззы заходи если чо
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Arata
Интересующийся

ru
Offline Offline

« Ответ #19 : 03-06-2010 15:28 » 

Sla, и где же я говорил, что "мне должны"?
И теперешний твой совет не многим лучше. Я пробовал Recipients, у меня вылетала ошибка, дословно не помню, что-то вроде того, что нет такого параметра. Читай мой первый пост: "в Бэйсике я дуб дубом". Вот если приведешь конкретный пример, как к этому списку обращаться, то вот то уже дело.
З.Ы. Я уже сказал, что больше мне это не нужно. Другим способом задачу решил, без Бэйсика.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines