如何通过PowerShell使用MailKit发送电子邮件?
我在使用mailkit创建邮件对象时遇到困难,因此我可以添加发件人、收件人、主题和正文,其中可能包含要在断开连接之前发送的附件。我已经创建了MailKit对象,取消令牌对象。我能够使用add type-path加载MailKit和MimeKit DLL,并且我能够连接、验证、断开连接和处置,但是消息对象创建部分和发送部分是我需要帮助的地方。我有以下资料:如何通过PowerShell使用MailKit发送电子邮件?,powershell,powershell-2.0,powershell-3.0,powershell-4.0,Powershell,Powershell 2.0,Powershell 3.0,Powershell 4.0,我在使用mailkit创建邮件对象时遇到困难,因此我可以添加发件人、收件人、主题和正文,其中可能包含要在断开连接之前发送的附件。我已经创建了MailKit对象,取消令牌对象。我能够使用add type-path加载MailKit和MimeKit DLL,并且我能够连接、验证、断开连接和处置,但是消息对象创建部分和发送部分是我需要帮助的地方。我有以下资料: $MkSmtp = New-Object MailKit.Net.smtp.SmtpClient $CanToken = Ne
$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
从哪里来的。这在我的开发人员机器上起作用,但将其投入生产会产生以下错误:
方法调用失败,因为[MimeKit.MimeMessage]不包含名为“new”的方法
当它试图通过以下行时:
$Message = [Mimekit.MimeMessage]::new()
通过add type加载dll并在开发和生产服务器上的powershell命令行上运行“[MimeKit.MimeMessage]| Get Member-Static”后,在此行放置断点,显示以下内容:
$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()
发展
生产
在开发和生产中加载相同的DLL。我已经使用Add Type和System.Reflection.Assembly加载了DLL。生产在PowerShell 4.0上,而我的开发箱在PowerShell 5.1上。我不知道这是否是问题所在。有人有什么想法吗?将我们的live server更新为WIndows Management Framework 5.1(PowerShell),现在在查看静态Get成员时使用了新方法。没有人遇到或看到过此类问题吗?仍然有困难。
$Message = New-Object Mimekit.MimeMessage