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