在Powershell中将MailKit DLL作为程序集加载



我正在尝试使用MailKit dll作为Powershell中的程序集,但它无法工作。我尝试过使用add-type和[System.Reflection.Assembly]方法,但没有成功。邮件套件库的链接:

https://github.com/jstedfast/MailKit

使用此方法:

 $path="$HOME.nugetpackagesmailkit1.16.1libnet451MailKit.dll" 
  [System.Reflection.Assembly]::LoadFile($path)

这不引用内存中的程序集。使用此方法:

Add-Type -Path $path

这是错误:

  • 添加类型 - 路径$path
  • ~~~~~~~~~~~~~~~~~~~~
    • 分类信息 : 未指定: (:)[Add-Type], ReflectionTypeLoadException
    • FullQualifiedErrorId : System.Reflection.ReflectionTypeLoadException,Microsoft.PowerShell.Commands.AddTypeCommand

谢谢

丹尼尔

这个完整的脚本可能会对其他人有所帮助:

# search for "Test" in subject and MoveTo Archive/2018
$packages = split-path -parent $MyInvocation.MyCommand.Definition
add-type -path (Join-Path $packages "MimeKit.dll") | Out-Null
add-type -path (Join-Path $packages "MailKit.dll") | Out-Null
#Server and Mailbox Definitions
$mailserver = "mail.corp.com"
$username =  "email@corp.com"
$password = "password"
$cnn = New-Object MailKit.Net.Imap.ImapClient
$cnn.Connect($mailserver)
$cnn.Authenticate($username,$password)
$cnn.Inbox.Open([MailKit.FolderAccess]::ReadWrite)
$query = [MailKit.Search.SearchQuery]::SubjectContains("Test")
#$orderBy = @([MailKit.Search.OrderBy]::Arrival)
#filter            
$uids = $cnn.Inbox.Search($query) #$orderby) not working yet
#download   
$msgs = $cnn.Inbox.Fetch($uids, [MailKit.MessageSummaryItems]::UniqueId -bor [Mailkit.MessageSummaryItems]::BodyStructure)
#do something
#move
$archive = $cnn.GetFolder("Archive.2018")
$cnn.Inbox.MoveTo($uids, $archive)  
$cnn.Disconnect($true)

检查路径。对我来说,$MailKitDllPath中的绝对路径工作得很好:

  Add-Type -Path $MailKitDllPath
  $client = New-Object MailKit.Net.Smtp.SmtpClient

我发现MailKit引用了MimeKit dll,但是加载MailKit.dll没有错误,因此也需要加载MimeKit.dll。

[System.Reflection.Assembly]::LoadFile("$home.nugetpackagesMailKit1.16.1libnet451MailKit.dll")
[System.Reflection.Assembly]::LoadFile("$home.nugetpackagesmimekit1.16.1libnet451MimeKit.dll")

相关内容

  • 没有找到相关文章

最新更新