SmtpClient.send-找不到路径的一部分

时间:2019-03-15 20:34:54

标签: smtpclient

我正在尝试向本地文件夹写一封电子邮件。我使用以下代码成功将电子邮件写入了我的文档文件夹:

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()行上中断,出现上述错误。据我所知,代码路径是相同的。我试图写入另一个项目正在使用的同一文件夹,但无济于事。我唯一能想到的是它试图在电子邮件文件存在之前就将其写入,但是另一个项目正在将其写入就可以了。

有人可以告诉我是什么导致了此错误吗?

谢谢

〜乔什

1 个答案:

答案 0 :(得分:0)

这可能是权限问题。确保您的应用程序在其下运行的帐户具有“写入”此目录的权限。您的 Directory.Exists 可能会通过,因为它只检查目录是否存在,但在尝试实际写入时失败。