如何知道该电子邮件已发送,并且可以删除附件?
How to know, that email was sent, and attachments can be deleted?
我有一个方法,就是按照确定的路径保存截图,然后发邮件,附上截图。据我所知,发送后 - 正在创建使用附件文件的特殊线程,因此在该线程工作时我无法删除它。所以,我需要知道文件何时可以删除。
这是我的代码:
-- 配置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));
}
}
These methods block while the message is being transmitted.
因此,在传输消息时,该方法会阻塞。因此,在该方法完成并且您已经处理了消息实例之后,您可以删除该文件。
当然,它仍然可以锁定文件。这就是为什么我会说你应该首先处理 SmtpClient
然后尝试删除文件(在 using
块之后这样做)。到时候应该没问题。
我发现文件是由 message 对象保存的,而不是由 smtp 对象保存的,所以我也添加了 using block for message。
感谢大家))
我有一个方法,就是按照确定的路径保存截图,然后发邮件,附上截图。据我所知,发送后 - 正在创建使用附件文件的特殊线程,因此在该线程工作时我无法删除它。所以,我需要知道文件何时可以删除。
这是我的代码:
-- 配置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));
}
}
These methods block while the message is being transmitted.
因此,在传输消息时,该方法会阻塞。因此,在该方法完成并且您已经处理了消息实例之后,您可以删除该文件。
当然,它仍然可以锁定文件。这就是为什么我会说你应该首先处理 SmtpClient
然后尝试删除文件(在 using
块之后这样做)。到时候应该没问题。
我发现文件是由 message 对象保存的,而不是由 smtp 对象保存的,所以我也添加了 using block for message。
感谢大家))