我正在使用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”
请帮助:)
答案 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>