Bagaimana cara menambahkan lampiran email dari array byte?


110

Saya memiliki byte[]dengan isi file. Saya ingin mengirimkannya sebagai lampiran menggunakan System.Net.Mail.

Saya melihat kelas lampiran memiliki 1 kelebihan beban yang menerima aliran.

Attachment att = new Attachment(Stream contentStream,string name);

Apakah mungkin untuk melewati byte[]kelebihan ini?


BTW, Anda juga dapat menggunakan att.ContentDisposition jika Anda ingin menyetel atribut lain dari file terlampir (mis. CreationDate).
John Gilmer

Jawaban:


214

Cara termudah:

Attachment att = new Attachment(new MemoryStream(bytes), name);

Perhatikan bahwa kecuali Anda melakukan hal-hal yang funky dengan operasi asynchronous, MemoryStreamaman untuk dibiarkan tanpa dibuang, yang dapat membuat hidup Anda lebih mudah. Memang tidak ada jaminan bahwa itu akan menjadi kenyataan di masa depan, tetapi saya pikir itu tidak mungkin akan berubah. Saya tidak dapat melihat indikasi apa pun, apakah membuang kemelekatan membuang alirannya :(


2
Poin bagus, saya perhatikan ketika menambahkan lampiran berbasis file, saya perlu membuang objek lampiran untuk melepaskan pegangan pada file. Tentunya aliran harus diurus oleh GC, karena ini bukan operasi IO?
JL.

FWIW, panggilan kelas Lampiran Mono Disposepada aliran konten, dan dari kasus uji cepat, .NET 4.0 melakukan hal yang sama. Saya tidak terlalu geli bahwa ini masalahnya, tetapi itu dia.
Matt Enright

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.