Une entrée tardive - mais j'espère toujours utile à quelqu'un: -
Voici un extrait simplifié pour envoyer une chaîne en mémoire sous forme de pièce jointe à un e-mail (un fichier CSV dans ce cas particulier).
using (var stream = new MemoryStream())
using (var writer = new StreamWriter(stream)) // using UTF-8 encoding by default
using (var mailClient = new SmtpClient("localhost", 25))
using (var message = new MailMessage("me@example.com", "you@example.com", "Just testing", "See attachment..."))
{
writer.WriteLine("Comma,Seperated,Values,...");
writer.Flush();
stream.Position = 0; // read from the start of what was written
message.Attachments.Add(new Attachment(stream, "filename.csv", "text/csv"));
mailClient.Send(message);
}
StreamWriter et le flux sous-jacent ne doivent pas être supprimés avant l'envoi du message (pour éviter ObjectDisposedException: Cannot access a closed Stream
).