G_h*_*hi3 1 .net powershell smtp
我System.Net.Mail.SmtpClient在 Powershell 中使用 .Net 类来发送带有一些附加文档的邮件。它在我们的测试环境中运行良好,但在生产中失败。
问题是,在生产中需要一个完全指定的域名来发送邮件。但是,据我所知, SmtpClient 不允许我指定这一点。我在网上看过,你可以在asp.net 中使用web.config 设置来指定域名,但我似乎无法在Powershell 中使用它。
有没有办法解决这个问题,或者我必须用另一种语言来实现它?
编辑:这是我正在使用的代码
$SmtpClient = New-Object System.Net.Mail.SmtpClient "mail.mailserver.com", 25
$Mail = New-Object System.Net.Mail.MailMessage
# Custom (working) Cmdlet for creating a NetworkCredential object
$SmtpClient.Credentials = (GetCredential-FromFile)
$Mail.Subject = "New Import"
$Mail.Body = ""
$Mail.From = "myaddress@mailserver.com"
$Mail.To.Add("myaddress@mailserver.com")
$Mail.Attachments.Add(New-Object System.Net.Mail.Attachment "file.txt")
$SmtpClient.Send($Mail)
Run Code Online (Sandbox Code Playgroud)
SMTP-Server 已设置,但我需要设置客户端(使用脚本的机器)的 FQDN。
这是 .NET Framework 实现中的一个错误(或缺失的功能,取决于您希望如何看待它)。默认情况下,主机的 NetBIOS 名称用于 HELO 命令,并且SmtpClient该类没有用于在程序/脚本中配置 HELO 主机名的属性。有关该问题的详细讨论,请参见此处。您需要在客户端上创建/更改配置文件以覆盖默认值。
编辑powershell.exe.config所在目录中的文件powershell.exe。如果文件不存在,则创建该文件。确保它至少包含以下几行:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="network">
<network clientDomain="mail.example.com" />
</smtp>
</mailSettings>
</system.net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
替换mail.example.com为您客户的 FQDN。
对于 .NET Framework 2.0,您首先需要应用补丁(或升级到 .NET Framework 4.0 或更高版本),然后才能配置该clientDomain属性。
有关 SMTP 客户端网络设置的更多信息,请参见此处。
如果您从一开始就发布了您的代码和错误消息,我们就可以更早地提供此答案。
| 归档时间: |
|
| 查看次数: |
1651 次 |
| 最近记录: |