2016-11-17 106 views
1

我想从我的mvc应用程序发送电子邮件。以下是我使用的代码的一部分:SmtpException:无法获取IIS拾取目录

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 
smtpClient.UseDefaultCredentials = true; 
smtpClient.Send(message); 

上面的代码是给错误:

Cannot get IIS pickup directory SmtpException.

但是,如果我跑我的Visual Studio作为管理员,邮件发送成功。

如果我理解正确,问题是关于访问权限,但我无法弄清楚什么。 如果相关,应用程序是具有Windows身份验证的Intranet应用程序。

+0

进一步你去,越您会发现总是以管理员身份运行Visual Studio的原因。调试ASP.NET网站和使用IIS是其中的原因。它已经成为我在新开发机器上确定的第一件事情之一。 有关需要管理员权限的功能/操作的列表,请参阅此页:https://msdn.microsoft.com/en-us/library/jj662724.aspx –

回答

1

尝试手动设置拾取目录:

// C#

client.PickupDirectoryLocation = ...; 

或者在ASP.NET的Web.config设置此相反:

<configuration> 
    <system.net> 
     <mailSettings> 
      <smtp deliveryMethod="SpecifiedPickupDirectory"> 
       <specifiedPickupDirectory 
        pickupDirectoryLocation="..." /> 
       <network defaultCredentials="false" /> 
      </smtp> 
     </mailSettings> 
    </system.net> 
</configuration> 
+0

工作原理:-)。非常感谢 – ShyProgrammer

+0

出于好奇,为什么我不必为管理员手动设置拾取目录。我的意思是为什么iis无法为非管理员的用户获取代答目录。 – ShyProgrammer

+0

对不起,如果这是跛脚。第一个应用程序,所有这些都是新的 – ShyProgrammer