2

我正在使用 C# 并且在我的 IIS 上我正在发送 smtp 消息(使用本地主机)当人们浏览到它时服务器具有 SSL 认证(https)我想改进将使用 SSL 发送的邮件发送所以我添加了这一行:

`client.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;`
`client.UseDefaultCredentials = true;`
`client.EnableSsl = true;`

在创建客户端之后: var client = new System.Net.Mail.SmtpClient("127.0.0.1");

之前: client.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;

但现在当我发送邮件时,我得到:“不得为拾取目录传递方法启用 SSL”

请帮忙 :)

4

3 回答 3

5

您必须在代码中将交付方式设置为网络:

client.DeliveryMethod = SmtpDeliveryMethod.Network;

于 2014-06-23T13:32:07.520 回答
0

根据SendAsync 方法的 MSDN 页面的 Exception 部分,如果“EnableSsl 设置为 true 但 DeliveryMethod 属性设置为 SpecifiedPickupDirectory 或 PickupDirectoryFromIis”,您将收到 SmtpException。对我来说,DeliveryMethod 默认设置为 Network(虽然它是一个桌面客户端)。从错误消息看来,它是特定的或 IIS 为您拾取的。您的软件是桌面还是 ASP.NET Web 应用程序?跟我们多说些。您使用的是 Send 还是 SendAsync?“client.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;” 是多余的, UseDefaultCredentials 应该在后台自动执行类似的操作。

于 2013-02-26T23:55:46.407 回答
0

如果@badr slaoui 解决方案不适合您,我想补充一点。检查您的 web.config <mailSettings>,评论解决了我的问题。

<mailSettings>
  <smtp deliveryMethod="SpecifiedPickupDirectory" from="no-reply@global.ca">
    <network host="localhost" port="25" />
            <specifiedPickupDirectory pickupDirectoryLocation="C:\inetpub\mailroot\Pickup" />
  </smtp>
</mailSettings>
于 2020-02-06T01:15:13.160 回答