在Powershell中使用mail.dll获取邮件主题

时间:2010-03-02 19:29:24

标签: .net dll powershell email imap

尝试从包含IMAP connect的电子邮件中读取Powershell中的字符串:

我使用来自http://www.limilabs.com/mail/的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()现在列出了一封电子邮件,我想最后一封......但我想要一个具有特定主题的电子邮件。

Doku给出了以下示例,但我无法处理此im Powershell:

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

我想我可能在我的测试中遇到了麻烦,因为“Where”也是一个原生的Posh-Command ...... 它总是以失踪的错误结束......

2 个答案:

答案 0 :(得分:1)

我不是PowerShell专家,但这有效:

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

另请注意,IMAP服务器很少支持排序扩展程序。

答案 1 :(得分: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()