0

我无法在 C# 中发送带有附件的电子邮件。第一次一切正常:生成一个 pdf 文件并将其附加到电子邮件中,并且可以发送和接收电子邮件。但是如果我尝试两次,生成文件时会出现 IO-Exception。如果我尝试手动重命名文件,我会收到一条错误消息,这表明 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);

有人知道缺少什么吗?

谢谢!

4

1 回答 1

2

对于初学者,请尝试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);
                }
            }
        }
于 2013-11-13T11:14:10.160 回答