Показать полную графическую версию : Извлечь информацию из файлов .msg
Всем привет!
Имеется папка, в которой много сохраненных писем из Outlook. Расширение .msg
Каким образом можно выдернуть информацию по каждому файлу и сохранить например в txt или csv. Интересует:
1. Тема письма или можно имя файла (они совпадают);
2. Дата сообщения (поле "Отправлено").
Заранее спасибо!
Выложите пару-тройку *.msg, упаковав их в архив, и укажите для каждого из образцов «Дату сообщения».
В архиве 2 письма.
Даты писем:
Чт 24.12.2015 8:56
Чт 24.12.2015 8:57
PowerShell + Outlook:
$outlook = New-Object -comobject outlook.application
Get-ChildItem C:\msg\ -Filter *.msg| ForEach-Object{
$msg = $outlook.CreateItemFromTemplate($_.FullName)
$msg | Select senderemailaddress,to,subject,Senton,body
}
Вывод:
SenderEmailAddress : dahiko@mail.ru
To : Igor Kholstinin
Subject : Тест1
SentOn : 12/24/2015 5:56:18 AM
Body : --
Отправлено из Mail.Ru для Android
SenderEmailAddress : dahiko@mail.ru
To : Igor Kholstinin
Subject : Тест2
SentOn : 12/24/2015 5:56:32 AM
Body : --
Отправлено из Mail.Ru для Android
Работает, но результат выводится в строки. Как сделать, чтобы выводилось в столбец?
Например:
SenderEmailAddress, To, Subject, SentOn
@mail.ru, Vasya Pupkin, Тест2, 12/24/2015 5:56:32 AM
Get-ChildItem C:\msg\ -Filter *.msg| ForEach-Object{
$outlook.CreateItemFromTemplate($_.FullName)
} | Select senderemailaddress,to,subject,Senton,body | ConvertTo-Csv -NoTypeInformation
Добавил выгрузку в файл. В итоге получилось так:
$outlook = New-Object -comobject outlook.application
Get-ChildItem C:\msg\ -Filter *.msg| ForEach-Object{
$outlook.CreateItemFromTemplate($_.FullName)
} | Select senderemailaddress,to,subject,Senton | Export-Csv C:\msg\test.txt -Encoding UTF8
Спасибо большое!
Вопрос решен.
Вопрос только со временем. Там случайно даты не по Гринвичу хранятся (по идее, именно в UTC должны)? Не надо ли делать пересчёт на локальное время (у меня под WSH время так же отдавалось в 5 часов, а не в восемь)?
DeathMan2k4
10-07-2017, 09:59
Подскажите, а реально ли извлечь файл прикрепленный ?
Выложете Ваши образцы сообщений — попробуем.
surgutfred
13-07-2017, 14:31
DeathMan2k4, когда у меня встал такой вопрос я решил только через использование сторонней программы с вызовом через bat
"C:\Program Files (x86)\TotalMailConverter\MailConverter.exe" "%PUT%" "%PUT%" -kfs -c XHTML -template "[nn]. [date] - [subject]" -sender:off -rcpt:off -subject:off -attach -iattach:off -images:off -msg:off -dpi 300 -pc M -PDFAuthor Softplicity -pdfver 1.4 -TM 1 -LM 1 -BM 1 -RM 1 -ps A4 -tc G4 -tjq 80 -HeadText "Page [page]" -HeadAlign c -HeadFont Tahoma -HeadSize 10 -FootText [date] -FootAlign c -FootFont Tahoma -FootSize 10 -r
Если кто решит только через bat то же буду благодарен...
Если кто решит только через bat »
surgutfred, никто не решит. Пакетные файлы — не тот уровень.
Всем привет!
Этот скрипт почему-то перестал работать. Последний раз им пользовался примерно год назад. Возможно офис обновился и что-то надо подправить?
$outlook = New-Object -comobject outlook.application
Get-ChildItem C:\Users\Vasya\Desktop\111\ -Filter *.msg| ForEach-Object{
$outlook.CreateItemFromTemplate($_.FullName)
} | Select senderemailaddress,to,subject,Senton | Export-Csv C:\Users\Vasya\Desktop\111test.txt -Encoding UTF8
Подскажите, кто знает? Такая ошибка возвращается
Исключение при вызове "CreateItemFromTemplate" с "1" аргументами: "Невозможно привести COM-объект типа "Microsoft.Office.Interop.Outlook.ApplicationClass" к интерфейсному
типу "Microsoft.Office.Interop.Outlook._Application". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID "{00063001-0000-0
000-C000-000000000046}" возвратил следующую ошибку: Библиотека не зарегистрирована. (Исключение из HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))."
C:\Users\Vasya\Desktop\111\111.ps1:3 знак:4
+ $outlook.CreateItemFromTemplate($_.FullName)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : InvalidCastException
Пробовал:
1. "-comobject" менять на "-com". Прочитал на одном из форумов, что должно помочь с более новыми версиями Office, но не помогло.
2. В реестре удалять все разделы с именем 00063001-0000-0000-C000-000000000046. Прочитал на одном форуме, что это может остатки от прошлой версии Office, которые мешают. Но не помогло.
Вот здесь (https://www.ibm.com/support/pages/hresult-0x8002801d-typeelibnotregistered-errors-launching-excel-related-functionality-caused-installing-incompatible-version-skype-business)прочитал, что похожая проблема вызвана тем ,что разные версии Office и Skype установлены. Да это так. Office 2013, а Skype 2016. Обходное решение, которое там описано, оно не помогает. После удаления ветки реестра HKEY_CLASSES_ROOT\TypeLib\{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}\2.8 та же ошибка.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.