2010-03-02 55 views
1

試圖讀取從IMAP電子郵件在PowerShell中的字符串連接:從http://www.limilabs.com/mail/獲取郵件在PowerShell中

我使用Mail.dll 的Docu: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()現在列出了一個電子郵件,我想最後一個..但我想要一個具有特定主題。

的數獨給出下面的例子,但我不能處理這個IM PowerShell的:

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

我想我大概遇到了麻煩去與我的測試,因爲「去哪兒」也是本土辣妹命令。 .. 它總是以失蹤結束)...

回答

1

我不是一個PowerShell的專家,但這個工程:

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

也請注意,排序擴展很少是由IMAP服務器的支持。

+0

這工作!謝謝 – icnivad 2010-03-03 12:08:56

0

看起來像這些方法既不是靜態擴展方法也不是泛型方法。我說你只是需要幫助這個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()