Получить почту по теме с mail.dll в Powershell - PullRequest
1 голос
/ 02 марта 2010

Попытка чтения строки в Powershell из сообщения электронной почты с подключением IMAP:

Я использую Mail.dll из http://www.limilabs.com/mail/ Документ: http://www.limilabs.com/mail/documentation/

Я хочу найти конкретную тему.

Что у меня есть:

[Reflection.Assembly]::LoadFile("c:\mail.dll")
$imap = new-object Limilabs.Client.IMAP.Imap

$imap.Connect("192.168.0.1")
$imap.User = "user"
$imap.Password = "xxxx"
$imap.login()
  $imap.Select("Inbox.folder.subfolder")    #instead of $imap.selectinbox() i select a subfolder

  $imap.GetMessage() 

$ imap.GetMessage () теперь перечисляет одно электронное письмо, я думаю последнее ... но я хочу одно с определенной темой.

Доку приводит следующий пример, но я не могу справиться с этим в Powershell:

List<long> uids = imap.Search().Where(Expression.Subject("report")).Sort(SortBy.Date()).GetUIDList();

Я думаю, что у меня, вероятно, возникли проблемы с тестами, потому что "Где" также является родной шикарной командой ... Это всегда заканчивалось пропущенной) ошибкой ...

Ответы [ 2 ]

1 голос
/ 03 марта 2010

Я не эксперт по PowerShell, но это работает:

$Expression = [Limilabs.Client.IMAP.Expression]
$uids = $imap.Search().Where($Expression::Subject("report")).GetUIDList()
foreach ($uid in $uids ) { $imap.GetMessageByUID($uid) }

Обратите внимание, что расширение Sort редко поддерживается серверами IMAP.

0 голосов
/ 02 марта 2010

Похоже, что эти методы не являются ни статическими методами расширения, ни универсальными методами. Я бы сказал, что вам нужна помощь в преобразовании этого синтаксиса C # в PowerShell:

List<long> uids = imap.Search().Where(Expression.Subject("report")).Sort(SortBy.Date()).GetUIDList();

Прежде всего, общий синтаксис C # не работает в PowerShell, а синтаксис для вызова статических методов отличается. Попробуйте что-то вроде этого:

$report = [Limilabs.Client.IMAP.Expression]::Subject("report")
$sorter = [Limilabs.Client.IMAP.SortBy]::Date()
$uids   = $imap.Search().Where($report).Sort($sorter).GetUIDList()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...