我正在做file attachment
到memory stream
,因为temporary storage
是不可行的。
在这里,我做了一个Jpeg
图片附件。我查看了其他文件类型,可以通过切换MediaTypeNames
来完成这些操作,但是不幸的是.doc
和.docx
不在其中。
我想知道在这个特定场合您是否认识任何package and how to use it
?
//...set up MailMessage, add a bunch of non-file content to it
MemoryStream jpgStream = new MemoryStream();
string filename = uploadedFile.FileName;
System.Drawing.Image theImage = System.Drawing.Image.FromStream(uploadedFile.InputStream);
theImage.Save(jpgStream, System.Drawing.Imaging.ImageFormat.Jpeg);
jpgStream.Seek(0L, SeekOrigin.Begin);
emailMessage.Attachments.Add(new Attachment(jpgStream, filename, System.Net.Mime.MediaTypeNames.Image.Jpeg));
//something extra and send email...
答案 0 :(得分:0)
您应该将MediaTypeNames.Application.Octet用作mime类型。
答案 1 :(得分:0)
感谢Benoit Gidon
的回答。我再次证明你的假设是你最大的敌人。
显然,它就这么简单,并且只要将file.InputStream直接放入附件中就可以了,不需要任何其他特殊方法,这与其他S.O不同。帖子使您相信:
https://stackoverflow.com/questions/9095880/attach-multiple-image-formats-not-just-jpg-to-email
https://stackoverflow.com/questions/5336239/attach-a-file-from-memorystream-to-a-mailmessage-in-c-sharp
万一有人真的在挣扎,这是代码:
foreach (HttpPostedFileBase file in fullViewModel.filesCollection)
{
string filename = file.FileName;
msg.Attachments.Add(new Attachment(file.InputStream, filename, MediaTypeNames.Application.Octet));
}
我用一个.docx
文档进行了测试,该文档中包含5000 words
以及tables
和pictures
的内容,并按照原来的方式进行了重构。我的gmail客户端。
刚刚测试过,它与.png
的工作方式相同,因此不需要PngBitmapDecoder
。