Якщо ви лише вкладаєте рядок, ви можете зробити це лише у двох рядках:
mail.Attachments.Add(Attachment.CreateAttachmentFromString("1,2,3", "text/csv");
mail.Attachments.Last().ContentDisposition.FileName = "filename.csv";
Мені не вдалося змусити мене працювати, використовуючи наш поштовий сервер із StreamWriter.
Я думаю, може тому, що в StreamWriter вам не вистачає багато інформації про властивості файлів, і, можливо, нашому серверу не сподобалось те, чого бракувало.
За допомогою Attachment.CreateAttachmentFromString () він створив усе, що мені потрібно, і чудово працює!
В іншому випадку я б запропонував взяти файл, який є у пам'яті, та відкрити його за допомогою MemoryStream (байт []) та пропустити StreamWriter разом.