如何从内存流将.docx和.doc文件附加到电子邮件?

时间:2019-02-08 14:55:23

标签: c# .net asp.net-mvc memorystream .doc

我正在做file attachmentmemory 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...

2 个答案:

答案 0 :(得分:0)

答案 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以及tablespictures的内容,并按照原来的方式进行了重构。我的gmail客户端。

刚刚测试过,它与.png的工作方式相同,因此不需要PngBitmapDecoder