【发布时间】:2019-03-11 18:18:10
【问题描述】:
我有一个方法,通过确定的路径保存屏幕截图,然后制作电子邮件,并附上屏幕截图。据我了解,发送后 - 正在创建使用附件文件的特殊线程,因此在该线程工作时我无法删除它。所以,我需要知道文件何时可以被删除。
这是我的代码:
-- 配置smtp
private SmtpClient CreateSMTP()
{
var smtp = new SmtpClient("gate");
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("notifications@****.com", "3eCMCQxFde");
smtp.Port = 25;
smtp.EnableSsl = false;
return smtp;
}
-- 制作消息
public MailMessage MakeMessage(bool screenshotFlag)
{
MailAddress from = new MailAddress("notifications@****.com", Name);
MailAddress to = new MailAddress("****@****.com");
MailMessage message = new MailMessage(from, to);
message.Subject = Subject == string.Empty ? string.Empty : Subject;
message.Body = MessageText;
message.Body = GenerateLogAndExceptionInfo(message.Body);
message.BodyEncoding = Encoding.Unicode;
message.ReplyTo = new MailAddress(Mail);
if (screenshotFlag)
{
CreateScreenshot();
message.Attachments.Add(new Attachment(MailHelper.FeedBackScreenShotPath));
}
return message;
}
-- 发送邮件
public void SendMessage()
{
using (SmtpClient smtp = CreateSMTP())
{
smtp.Send(MakeMessage(SendWithScreenshot));
}
}
【问题讨论】:
-
工作完成后在你的帖子中删除?
-
删除是在关闭应用程序之前实现的。但是如果我发送消息然后很快关闭程序 - “发送线程”仍在使用附件,所以我有一个例外。在删除之前,我需要确切知道文件是否不再使用。 @DenisSchaf
-
如果是用户相关的问题,比如用户正在关闭应用程序,然后在关闭按钮上,隐藏您的表单/界面并完成发送电子邮件,然后再删除附件并关闭应用程序。
-
是的,我想隐藏界面,或者等待,或者拒绝关闭应用。但我不知道电子邮件何时真正发送。 @meJustAndrew
-
你可以看到this thread等待文件不再使用然后删除它。
标签: c# wpf smtpclient