【发布时间】:2023-03-18 23:40:02
【问题描述】:
我在使用 mailkit 创建 Message 对象时遇到了困难,因此我可以添加 From、To、Subject 和正文以及在断开连接之前可能有附件要发送的消息。我创建了 MailKit 对象,Cancelation Token 对象。我能够使用 add-type -path 加载 MailKit 和 MimeKit dll,并且能够连接、身份验证、断开连接和处置,但消息对象创建部分和发送是我需要帮助的地方。我有以下内容:
$MkSmtp = New-Object MailKit.Net.smtp.SmtpClient
$CanToken = New-Object System.Threading.CancellationToken ($false)
$SSL = [MailKit.Security.SecureSocketOptions]::SslOnConnect
$MkSmtp.Connect($MailServer, $Port, $SSL, $CanToken)
$MkSmtp.Authenticate(([System.Text.Encoding]::UTF8), $Username, $Password, $CanToken)
#$Message = New-Object ????
$MkSmtp.Send($Message)
$MkSmtp.Disconnect($true)
$MKSmtp.Dispose()
我认为答案是:
$Message = [Mimekit.MimeMessage]::new()
$Message.From.Add($From)
$Message.To.Add($To)
$Message.Subject = "Test"
$TextPart = [MimeKit.TextPart]::new("plain")
$Body = "This is just a test"
$TextPart.Text = $Body
$Message.Body = $TextPart
来自https://www.powershellgallery.com/packages/PSGSuite/2.13.2/Content/Private%5CNew-MimeMessage.ps1。这适用于我的开发人员机器,但将其投入生产会产生以下错误:
方法调用失败,因为 [MimeKit.MimeMessage] 不包含名为“new”的方法
当它试图通过以下行时:
$Message = [Mimekit.MimeMessage]::new()
通过 add-type 加载 dll 并在开发和生产服务器上的 powershell 命令行上运行“[MimeKit.MimeMessage] | Get-Member -Static”后在此行放置一个断点,它显示以下内容:
开发和生产都加载了相同的 DLL。我已经使用 Add-Type 和 System.Reflection.Assembly 加载了 DLL。生产在 PowerShell 4.0 上,而我的开发盒在 PowerShell 5.1 上。不知道是不是这个问题。有人有什么想法吗?
【问题讨论】:
-
没有人遇到或见过此类问题吗?还是有困难。
标签: powershell powershell-2.0 powershell-3.0 powershell-4.0