我正在尝试向本地文件夹写一封电子邮件。我使用以下代码成功将电子邮件写入了我的文档文件夹:
using (var client = new SmtpClient())
{
client.UseDefaultCredentials = true;
client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
client.PickupDirectoryLocation = tempDocsPath;
client.Send(message);//Writes to the PickupDirectoryLocation
}
但是,当我将相同的代码移植到另一个项目时,它给了我这个错误:
System.Net.Mail.SmtpException:发送邮件失败。 ---> System.IO.DirectoryNotFoundException:无法找到路径“C的一部分:\用户\ josh.bowdish \源\回购\ GenerateEmail \ GenerateEmail \ BIN \调试\ net461 \ TEMPFILES \ AAMkAGUyODNhN2JkLThlZWQtNDE4MS1hODM1LWU0ZDY4Y2NhYmMxOQBGAAAAAABKB1jlHZSIQZSWN7AYZH2SBwDZdOTdKcayQ5NMwcwkNT7UAAAAAAEMAADZdOTdKcayQ5NMwcwkNT7UAACn \ 0a5b24a5-d625- 4ecd-9990-af5654679820.eml'。
我已经验证了它试图写入的目录存在,甚至重写了它,使其看起来像这样:
private static string WriteEmail(MailMessage message, string messageDirectory)
{
if (Directory.Exists(messageDirectory))
{
using (var client = new SmtpClient())
{
client.UseDefaultCredentials = true;
client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
client.PickupDirectoryLocation = messageDirectory;
client.Send(message);//Writes to the PickupDirectoryLocation
}
...
}
//stuff that returns the full email path
}
它在client.Send()行上中断,出现上述错误。据我所知,代码路径是相同的。我试图写入另一个项目正在使用的同一文件夹,但无济于事。我唯一能想到的是它试图在电子邮件文件存在之前就将其写入,但是另一个项目正在将其写入就可以了。
有人可以告诉我是什么导致了此错误吗?
谢谢
〜乔什
答案 0 :(得分:0)
这可能是权限问题。确保您的应用程序在其下运行的帐户具有“写入”此目录的权限。您的 Directory.Exists 可能会通过,因为它只检查目录是否存在,但在尝试实际写入时失败。