Нужно достать из аутлука в текстовый файл некоторые данные, а именно: кому,от кого, время отправления, первая строка письма
Т.е программа должна это делать. Как из него вытащить информацию?
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
![]() ![]() |
| striker |
Сообщение
#1
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Репутация: 0 |
Нужно достать из аутлука в текстовый файл некоторые данные, а именно: кому,от кого, время отправления, первая строка письма
Т.е программа должна это делать. Как из него вытащить информацию? |
| volvo |
Сообщение
#2
|
|
Гость |
"DRKB -> ActiveX, COM и Другие технологии -> Работа с приложениями Microsoft Office -> Работа с Microsoft Outlook" смотрел? Там есть информация о работе с MS Outlook
|
| striker |
Сообщение
#3
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Репутация: 0 |
Единственное пока что там нашёл это как считать адрес отправителя:
Код var s: string; objCDO: OLEVariant; begin objCDO := CreateOLEObject('MAPI.Session'); objCDO.Logon('', '', False, False); objMsg := objCDO.GetMessage(itemOL.EntryID, itemOL.Parent.StoreID); s := objMsg.Sender.Address; ShowMessage(s); objMsg := Unassigned; objCDO := Unassigned; end И то не особо понятно. Может у меня версия старая? Или где ещё глянуть? |
| volvo |
Сообщение
#4
|
|
Гость |
Ну, проверить я ничего связанного с MS Outlook не могу. Я не пользуюсь им просто (он даже не установлен на моем компьютере), у меня другой клиент. Так что подождем того, кто пользуется именно Аутлуком...
|
| volvo |
Сообщение
#5
|
|
Гость |
Так... Нашел компьютер с Аутлуком и Дельфи одновременно... Уточни, чего именно тебе надо получить? Информацию об Исходящих, или Входящих? Вот это:
procedure TForm1.Button1Click(Sender: TObject);Получает информацию обо всех входящих письмах, включая и текст письма. На форме - TMemo + TButton + TOutlookApplication (вкладка Servers), проверено в D2007 + WinXP + Office XP |
| striker |
Сообщение
#6
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Репутация: 0 |
Я тоже Аутлуком не пользуюсь и не пользовался никогда, знаю что это такое и всё
В куске этого кода начало для меня вообще темный лес, синхронизация как я понимаю Мне нужно сбросить в текстовый файл информацию из выбранного письма (вот тоже как сделать Письмо может быть 2х типов: входящее, исходящее. Наверное, нужно будет 2 кнопочки сделать Из исходящего поля: кому, время отправления, первая строка письма Из входящего: от кого, время отправления, первая строка письма Т.е пользователь выбирает письмо и тыкает на кнопочку в зависимости от его типа, так, наверное, получится, удобнее никак скорее всего. Спасибо, буду рад если ещё чем-нибудь поможешь |
| striker |
Сообщение
#7
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Репутация: 0 |
volvo, больше ничего не нашёл?
|
| Unconnected |
Сообщение
#8
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Так Volvo тебе уже подсказал всё, что нужно:)
Немного модифицировал вышеприведённый код, добавил только вывод в текстовый файл. Сразу говорю, не проверял, т.к. дельфи нет пока, но вроде всё верно. procedure TForm1.Button1Click(Sender: TObject); Mozilla Thunderbird рулит) Сообщение отредактировано: Unconnected - -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
| volvo |
Сообщение
#9
|
|
Гость |
Погоди... Тебе что, надо, чтобы было так: пользователь работает с Аутлуком, твоя программа либо висит где-то на заднем плане, либо вообще не запущена. Выбрали одно из писем, запустили/активировали твою программы, и она сохранила нужные данные? Ну, допустим, Имя приславшего тебе письмо, Текст самого письма, и дата отсылки - не проблема, получается очень просто, даже безо всяких компонентов:
try, но если тебе надо еще и реальный e-mail, с которого выслано сообщение, то тут будет "биг бада бум", этого ты через Automation Object не получишь, надо будет заморачиваться с интерфейсами. Это только сегодня поздно вечером или завтра, раньше у меня не получится... |
| Unconnected |
Сообщение
#10
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Цитата но если тебе надо еще и реальный e-mail, А в im.SenderName какой E-mail? Или просто имя отправителя? -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
| volvo |
Сообщение
#11
|
|
Гость |
Там просто имя отправителя.
|
| striker |
Сообщение
#12
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Репутация: 0 |
Цитата Погоди... Тебе что, надо, чтобы было так: пользователь работает с Аутлуком, твоя программа либо висит где-то на заднем плане, либо вообще не запущена. Выбрали одно из писем, запустили/активировали твою программы, и она сохранила нужные данные? Да И нужен реальный e-mail |
| Unconnected |
Сообщение
#13
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Реальный, в Оутлуке, если не ошибаюсь, аж в свойствах письма указан, даже не сразу найдёшь..
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
| volvo |
Сообщение
#14
|
|
Гость |
Цитата И нужен реальный e-mail Ну, тогда тестируй... У меня работает вроде:procedure TForm1.OutlookClick(Sender: TObject);В файл запишешь уже сам, наверное... |
| striker |
Сообщение
#15
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Репутация: 0 |
Спасибо, всё работает оч. хорошо.
Время я ещё добавил. Только вот ещё что, когда отправленное письмо выделяешь, то копируется адрес отправителя, а нужен получателя, т.е кому письмо |
| volvo |
Сообщение
#16
|
|
Гость |
Угу... Значит, проверяй, в какой папке находишься, и если это "Sent Mail", то вытаскивать имя не через Reply, а так:
s_addr := ''; А вот как проверить, где ты находишься - в "Sent Items" или в Inbox - это сразу не скажу, надо проверять, опять нужна машина с MSO, это займет время... |
| striker |
Сообщение
#17
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Репутация: 0 |
Если будет возможность - посмотри, пожалуйста.
Время пока есть |
| volvo |
Сообщение
#18
|
|
Гость |
Навскидку (проверь, работает ли) - смотреть, что возвращает:
var currFolderName: String; |
| striker |
Сообщение
#19
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Репутация: 0 |
Да, работает только пишет адрес правильный "кому" а перед ним имя отправителя, т.е моё
Сразу я чего-то пока не вижу где косяк закрался Сообщение отредактировано: striker - |
| Unconnected |
Сообщение
#20
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Цитата а перед ним имя отправителя, т.е моё Возможно, так и должно быть, типа objRecips.Item(i).Address; или mailItem.Recipients.Item(i).Address; уже содержат имя отправителя? Просто обрезай ненужную часть строки.. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
|
Текстовая версия | 23.11.2025 8:00 |