我在使用C#发送带附件的电子邮件时遇到问题。 第一次一切正常:生成pdf文件并附加到电子邮件,电子邮件可以发送和接收。 但是,如果我尝试两次,生成文件时会出现IO异常。 如果我尝试手动重命名该文件,我会收到一条错误消息,告诉我IIS工作进程继续使用该文件。
如果我评论了发送电子邮件的部分,则可以生成并保存更多次文件。 因此,确定错误出现在此代码部分中。
以下是我发送电子邮件的代码:
MailMessage eMail = new MailMessage();
eMail.To.Add(sEmailAddressReceiver); //filled before
eMail.From = new MailAddress(sEmailAddressSender); //filled before
eMail.Subject = "Title";
eMail.Priority = MailPriority.Normal;
eMail.Body = "File is attached.";
Attachment aAttachment = new Attachment(sFilename);
eMail.Attachments.Add(aAttachment);
SmtpClient smtpClient = new SmtpClient("xxx", 25);
smtpClient.Send(eMail);
有人知道缺少什么吗?
谢谢!
答案 0 :(得分:1)
对于初学者,尝试在一次性物品上使用Dispose()
。
您可以使用using
语句隐式执行此操作。
或者通过明确调用Dispose()
using (MailMessage eMail = new MailMessage())
{
eMail.To.Add(sEmailAddressReceiver); //filled before
eMail.From = new MailAddress(sEmailAddressSender); //filled before
eMail.Subject = "Title";
eMail.Priority = MailPriority.Normal;
eMail.Body = "File is attached.";
using (Attachment aAttachment = new Attachment(sFilename))
{
eMail.Attachments.Add(aAttachment);
using (SmtpClient smtpClient = new SmtpClient("xxx", 25))
{
smtpClient.Send(eMail);
}
}
}