【发布时间】:2018-04-25 15:33:12
【问题描述】:
我正在做一个电子邮件表格。电子邮件有附件,并在附加文件后发送电子邮件。接下来需要从服务器中删除文件。当我试图获取文件时,它给了我主题错误。我什至在删除文件之前调用了 GC.Collect() 但错误仍然存在。我删除文件的代码是:
private void DeleteFiles(DataTable dt)
{
GC.Collect();
String[] sAttachments = new String[dt.Rows.Count];
try
{
sAttachments = new String[dt.Rows.Count];
for (Int32 J = 0; J < dt.Rows.Count; J++)
{
sAttachments[J] = dt.Rows[J]["AttachmentExt"].ToString().Trim();
string workDir = Server.MapPath(".") + @"\upload\";
if (File.Exists(workDir + sAttachments[J]))
File.Delete(workDir + sAttachments[J]);
}
}
catch (Exception ex)
{
}
要将文件附加到电子邮件中,我的代码是:
oMess.Subject = sSubject;
string workDir = System.Web.HttpContext.Current.Server.MapPath(".") + @"\upload\";
if (Attachments != null)
{
for (Int32 I = 0; I < Attachments.Length; I++)
{
oatt = new Attachment(workDir+ sAttachments[I]);
oMess.Attachments.Add(oatt);
}
}
oMess.IsBodyHtml = IsHtml;
oMess.Body = sBody;
SendMessageGmail(oMess);
编辑:我的邮件发送代码是:
private void SendMessageGmail(MailMessage message)
{
SmtpClient client = new SmtpClient("smtp.gmail.com");
client.EnableSsl = true;
client.UseDefaultCredentials = false;
NetworkCredential loginInfo = new NetworkCredential("myid", "mypassword");
client.Credentials = loginInfo;
client.Port = 587;
client.Send(message);
}
请指导和帮助。谢谢
【问题讨论】:
-
oMess 是什么类型的?如果是
System.Net.Mail.MailMessage,您可以在尝试删除文件之前尝试调用Dispose()。 -
@rsbarro,我应该在发送电子邮件后调用 Dispose() 吗?还是在 oMess.Attachments.Add(oatt) 之后?
-
@user576510 在发送电子邮件后尝试删除文件之前尝试。在 MailMessage 上调用 Dispose() 也会处理附件。
-
@rsbarro,我做到了,但仍然收到相同的错误消息。
-
@user576510 你能发布更多代码吗? AFAIK Dispose 应该有效。