Ошибка "Процесс не может получить доступ к файлу" после отправки письма - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! (Вопрос уже был задан, но промахнулась с темой) Следующий вопрос: Отправляю подготовленное сообщение: client.Send(message); Если успешно отправлено, то пытаюсь удалить директорию с прикрепляемыми файлами. Ругается: "Процесс не может получить доступ к файлу "attachm1.lzh", так как этот файл используется другим процессом." В System.Net.Mail.Attachment ничего вроде disposing не нашла. Что посоветуете?

Решение задачи: «Ошибка "Процесс не может получить доступ к файлу" после отправки письма»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Office.Interop.Outlook;
using Outlook = Microsoft.Office.Interop.Outlook;
using System.Net.Mail;
using System.Net;
using System.IO;
using System.Net.Mime;
using System.Diagnostics;
using System.Reflection;
using System.Data.SqlClient;
 
private FileInfo[] arrAttach;
private string msgSendToAdr;
private string msgSendSubj;
private string msgSendBody;
private string msgSendFromName;
private string serverSMTPName = "1.1.1.1";
private FileInfo[] arrAttach;
 
private void SendMsg()
{
    MailAddress from = new MailAddress(SendFromAdr(msgSendFromName), msgSendFromName);
    MailAddress to = new MailAddress(msgSendToAdr, SendToName(msgSendToAdr));
 
    MailMessage message = new MailMessage(from, to);
    message.Subject = msgSendSubj;
    message.Body = msgSendBody;
 
    //Вложенный файл
    for (int i = 0; i < arrAttach.Length; i++)
    {
        if (arrAttach[i] != null)
        {
            System.Net.Mail.Attachment attachmnt =
                new System.Net.Mail.Attachment(arrAttach[i].FullName.ToString(),
                MediaTypeNames.Application.Octet);
            message.Attachments.Add(attachmnt);
        }
        else break;
    }
 
    SmtpClient client = new SmtpClient(serverSMTPName);
    client.Timeout = 10000;
    client.Credentials = CredentialCache.DefaultNetworkCredentials; 
 
    try
    {
        client.Send(message);
        MessageBox.Show("Ваше сообщение успешно отправлено");
    }
    catch { }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5
Похожие ответы