none
Как выбрать заголовки писем в Outlook RRS feed

  • Общие обсуждения

  •  

    Задача: есть папка в outlook, надо извлечь инетовские заголовки из писем.

    Коллекцию писем в нужной папке я получил, перебираю полностью (получая объекты писем) - тут без вопросов. Не могу найти, через какое свойство извлечь заголовки:

    Code Snippet
    Microsoft Mail Internet Headers Version 2.0
    Received: from [196.217.58.164] ([196.217.105.102] RDNS failed) by mx.domain.ru with Microsoft SMTPSVC(6.0.3790.3959);
      Sat, 27 Sep 2008 02:35:05 +0400

     

     

    и т.д.

    9 октября 2008 г. 16:23

Все ответы

  • А можно подробнее что вы уже сделали, а то не совсем понятно что вы делаете.

    10 октября 2008 г. 0:33
  • Можно. Кусочек у меня получился такой:

    Code Snippet

    Dim objFolder

    Dim objNamespace

    Dim objOutlook

    Dim colItems

    Dim objItem

    Dim objItems

    Dim objFile

    Dim objFSO

    Dim ForWriting

    Dim olFolderJunk

    ForWriting = 2

    olFolderJunk = 23

    objOutlook = CreateObject("Outlook.Application")

    objNamespace = objOutlook.GetNamespace("MAPI")

    objFolder = objNamespace.GetDefaultFolder(olFolderJunk)

    colItems = objFolder.Items

    objFSO = CreateObject("Scripting.FileSystemObject")

    objFile = objFSO.OpenTextFile("c:\temp\output.txt", ForWriting)

    For Each objItem In colItems

    objFile.WriteLine(objItem.???????)

    Next

    objFile.Close()

     

     

    objItem, как видно, сам объект письма. А вот каким местом заголовок из него вытащить я не разумею...
    10 октября 2008 г. 4:08
  • Если у вас Microsoft Outlook 2007, то вот так:


     

    Code Snippet


    Set objFile = ...

    For Each objItem In colItems
      Set objProperties = objItem.PropertyAccessor
      objFile.Write(objProperties.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001E"))
    Next

     

     

    Более подробно: http://msdn.microsoft.com/en-us/library/bb176395.aspx
    17 октября 2008 г. 11:01
  • А как эту задачу решить в PowerShell?


    Хотелось бы отобрать по определенным критериям из папки Входящие Outlook 2010 некоторые письма.
    Пока не получается :(


    За основу брал скрипт, приведенный тут

     

    $oApp = New-Object -comobject "Outlook.Application";
    $oNS = $oAPP.GetNamespace("mapi");
    $MBRoot = $oNS.GetDefaultFolder(6);
    $oItems=$MBRoot.Items;
    $MBRoot.Items | Select-Object SenderName, SenderEmailAddress -unique | export-Csv c:\1_5\emails.csv -noTypeInformation

    Вываливается ошибка

    An exception was thrown when trying to enumerate the collection: "Заданное приведение является недопустимым.".
    At C:\1_5\out1.ps1:8 char:1
    + $ <<<< MBRoot.Items | Select-Object SenderName, SenderEmailAddress -unique | export-Csv c:\1_5\emails.csv -noTypeInfo
    rmation

    Такое ощущение, что коллекцию писем я не получаю, и дальнейшие манипуляции с ней невозможны.
    Что тут не так?

     

    31 января 2011 г. 18:42
  • Посмотрите все ли правильно - $oapp.Session.CurrentUser
    31 января 2011 г. 19:12
    Отвечающий
  • $outlook = New-Object -ComObject outlook.application
    $ns = $outlook.GetNamespace("MAPI")
    $inbox = $ns.GetDefaultFolder(6)
    $inbox.Items | select ReceivedTime, sendername, senderEmailAddress, subject | Export-Csv report.csv

    Всё работает.


    AKA Xaegr, MVP: PowerShell Блог: http://xaegr.wordpress.com
    1 февраля 2011 г. 5:57
    Модератор
  • Спасибо, Василий :)

    Ошибка скрипта похоже была вызвана неккоректностями среды разработки на моем ПК. Ваш скрипт тоже не запустился на нем.
    Подготовил ПК с новыми инсталляциями Outlook и PowerShell и все заработало.

    Посмотрел результат экспорта в EXСEL. Русские буквы в заголовках писем экспортировались в виде кракозябр.
    Не подскажете как с этим можно бороться?

    Экспорт шел в PowerShell 2.0 и Windows XP Rus with SP3 c русскоязычной локалью.

     

     

    1 февраля 2011 г. 11:19
  • укажите параметр -Encoding Unicode
    1 февраля 2011 г. 12:41
    Отвечающий