2010-03-02 58 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()