Tôi có một tài liệu excel được biểu diễn dưới dạng một byte [] và tôi muốn gửi nó dưới dạng tệp đính kèm trong email.Làm cách nào để thêm tệp đính kèm vào email bằng System.Net.Mail?
Tôi gặp sự cố khi xây dựng tệp đính kèm.
tôi có thể tạo một file đính kèm trong đó có các nhà thầu sau:
(Stream contentStream, ContentType contentType)
(Stream contentStream, string name)
(Stream contentStream, string name, string mediaType)
Ý tưởng của tôi vào lúc này là tạo ra một MemoryStream từ byte [] và vượt qua nó với phương pháp mà tạo ra các tập tin đính kèm.
Rất tiếc, tôi không thể thấy cách lấy tên tệp và loại nội dung dự định từ MemoryStream và tôi cũng không thể xem cách cung cấp loại nội dung chính xác. Có những lựa chọn cho văn bản thuần, Pdf, Rtf vv nhưng không có gì mà tôi có thể thấy rằng ngay lập tức nhảy ra khỏi tôi như là một trong tôi nên sử dụng cho một tài liệu Excel.
Gần nhất tôi có thể tìm thấy là MediaTypeNames.Application.Octet trong đó nêu:
Thành viên Octet chỉ định rằng tập tin đính kèm chứa generic nhị phân dữ liệu.
Tuy nhiên, ngay cả khi đây là mục cần sử dụng, trừ khi nó có thể được chuyển thành thuộc tính của luồng thì phương pháp gửi email của tôi sẽ chỉ có thể gửi byte [] dưới dạng tài liệu Excel ..
Có lẽ một số loại luồng khác mà tôi có thể sử dụng không? Hoặc tôi sẽ phải tạo loại Luồng của riêng mình có chi tiết tôi cần.
Chắc chắn ai đó ngoài kia đã làm điều này trước và chắc chắn Microsoft đã có thể nghĩ điều này thông qua đến mức này ....
Bất kỳ trợ giúp sẽ được nhiều đánh giá cao.
Cập nhật: Vui lòng không bỏ phiếu cho bất kỳ câu trả lời nào sử dụng hàm tạo lấy tên tệp dưới dạng chuỗi. Tôi thực sự cần sự giúp đỡ bằng cách sử dụng những người có một Stream ... Tôi muốn tránh phải viết các tập tin vào đĩa, gửi email cho nó, và sau đó ngay lập tức xóa nó. Vì có một phương pháp cho phép tôi làm điều đó, tôi muốn sử dụng phương pháp đó nếu có thể.
Solution Cập nhật
Conrad quản lý để tìm thấy những gì tôi đang tìm kiếm! Cảm ơn người đàn ông heaps!
Tôi sẽ chỉ ghi lại giải pháp được đề xuất trong trường hợp có điều gì đó xảy ra với nội dung tại liên kết được cung cấp.
Tín dụng cho giải pháp này đi vào www.systemnetmail.com
static void AttachmentFromStream()
{
//create the mail message
MailMessage mail = new MailMessage();
//set the addresses
mail.From = new MailAddress("[email protected]");
mail.To.Add("[email protected]");
//set the content
mail.Subject = "This is an email";
mail.Body = "this content is in the body";
//Get some binary data
byte[] data = GetData();
//save the data to a memory stream
MemoryStream ms = new MemoryStream(data);
//create the attachment from a stream. Be sure to name the data
//with a file and
//media type that is respective of the data
mail.Attachments.Add(new Attachment(ms, "example.txt", "text/plain"));
SmtpClient smtp = new SmtpClient("127.0.0.1");
smtp.Send(mail);
}
Trong trường hợp của tôi, nó chỉ có nghĩa là tôi sẽ phải thay đổi phương pháp của tôi để có những tên tập tin và fileformat như dây đàn. Tôi sẽ thử dùng Octet ... nhưng thất bại là tôi sẽ chuyển sang loại MIME chính thức.
Mọi thứ được xem xét, đây là một giải pháp khá rõ ràng ... nhưng tôi đánh giá cao sự trợ giúp trong việc giải quyết nó ...và điều tốt là giải pháp này sẽ được ghi lại cho các lập trình viên tương lai có cùng vấn đề.
Cảm ơn mọi người đã giúp bạn!
Cảm ơn! Đó chính xác là những gì tôi đang tìm kiếm. Làm thế nào bạn quản lý để tìm thấy điều đó? Tôi cho rằng cả hai chúng tôi đều sử dụng cùng một Google để tìm kiếm? – mezoid
Ha ha! Vâng, chúng ta hãy chỉ nói trong quá trình m công việc tôi dành rất nhiều thời gian của tôi tìm kiếm câu trả lời cho các vấn đề! – Rad
Cảm ơn Rad, liên kết rất tiện lợi mà – JsonStatham