有一堆内部批处理脚本和其他利用 sendEmail.exe 的东西,这是一个旧的 perl 自动电子邮件应用程序,可以在这里找到:
问题是,随着我们迁移到 office365 以及我们的安全策略,smtp 需要 startls。SendEmail 不支持 startls(或没有 startls 选项)... 虽然 ssl 和 tls 都有选项:yes/auto/no,但它们都不起作用。
一种选择是使用 python 和 smtplib 库创建一些新东西来替换 sendEmail.exe,但我不想在这里重新发明轮子。
是否还有其他流行的免费实用程序或程序,我可以轻松替换它们来充当这个角色?
答案1
我为你提供了另一个解决方案,它是你旧的受信任的 SendMail.exe,可与隧道。Stunnel 确实支持 STARTTLS,并且它在 Linux/Windows/MacOS/*NIX 下运行。
你可能会问,Stunnel 现在是什么?嗯,是这样的:
Stunnel 是一种代理,旨在为现有客户端和服务器添加 TLS 加密功能,而无需对程序代码进行任何更改。
因此,基本上它使您的旧解决方案能够使用 TLS;Stunnel 完成其中的加密部分,而 SendMail.exe 完成其余部分。
这可能是对您来说最简单的解决方案;您无需替换 SendMail.exe,只需添加 Stunnel,这可以很快完成。
答案2
我将使用 PowerShell 将其替换为更原生的方法。Send-MailMessage
现在已经过时了,留给我们的是System.Net.Mail
:MailMessage
&SmtpClient
。假设您的脚本可以将变量(并且您可以填补缺失)传递给:
$mailMessage = New-Object System.Net.Mail.MailMessage($fromAddress, $toAddress, $subject, $body)
$smtpClient = New-Object System.Net.Mail.SmtpClient($smtpServer, $smtpPort)
$smtpClient.EnableSsl = $true
$smtpClient.Credentials = New-Object System.Net.NetworkCredential($smtpUsername, $smtpPassword)
$smtpClient.Send($mailMessage)