收到错误:不得为拾取目录传送方法启用SSL

时间:2013-01-10 09:38:02

标签: smtpclient

我正在使用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”

请帮助:)

3 个答案:

答案 0 :(得分:4)

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

client.DeliveryMethod = SmtpDeliveryMethod.Network;

答案 1 :(得分:0)

根据SendAsync method's MSDN page's Exception section,如果“EnableSsl设置为true但DeliveryMethod属性设置为SpecifiedPickupDirectory或PickupDirectoryFromIis”,则会获得SmtpException。对我来说,默认情况下DeliveryMethod设置为Network(虽然它是桌面客户端)。从错误消息,它似乎是特定的或IIS拾取。是您的软件桌面还是ASP.NET Web应用程序?请告诉我们更多。您使用的是Send还是SendAsync? “client.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;”是多余的,UseDefaultCredentials应该自动执行类似的操作。

答案 2 :(得分: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>