我正在创建一个新的* .csv文件,在创建它之后,我想将此文件作为附件发送到电子邮件中,但文件被锁定10到15秒。是否有任何方法等待文件被释放,然后发送此文件没有任何异常:该进程无法访问该文件,因为它正被另一个进程使用。
File.WriteAllText("test.csv", sb.ToString(),Encoding.UTF8);
SendMail();
private static void SendMail()
{
MailMessage mail = new MailMessage("from", "to");
SmtpClient client = new SmtpClient();
client.Port = 25;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Host = "host";
mail.Subject = "this is subject";
mail.Body = "this is body";
mail.Attachments.Add(new Attachment("test.csv"));
mail.IsBodyHtml = true;
client.Send(mail);
}
如果我等待Thread.Sleep(),我可以成功发送电子邮件,但我不想使用它。我不知道文件操作完成的确切时间。这是一个控制台应用程序。有什么建议吗?
答案 0 :(得分:0)
为什么需要将文件写入磁盘并在创建attachent时再次读取它?我猜你可以使用方法在从现成的字符串创建附件时。
// Attach the message string to this e-mail message.
Attachment data = new Attachment(textMessage, MediaTypeNames.Text.Plain);
data.Name = "test.csv";
在此处找到:http://msdn.microsoft.com/ru-ru/library/9089e309(v=vs.110).aspx 或者尝试这种方法:http://msdn.microsoft.com/ru-ru/library/ms144617(v=vs.110).aspx