asp.net mvc 5发送的电子邮件附件已损坏

时间:2016-05-26 06:10:03

标签: asp.net-mvc visual-studio azure asp.net-mvc-5 system.net.mail

我正在尝试使用此tutorial中描述的方法发送电子邮件,其中包含此tutorial的模型结构,并且部分成功完成此操作。我遇到的唯一问题是作为附件发送的文件已损坏。我试图让它在很多方面发挥作用,以至于我失去了数量。显然,由于我没有找到答案,所以没有努力,但在我继续寻找答案的时候决定问。

我的控制器操作如下:

public async Task<ActionResult> Index( [Bind(Include = "column names..")] Contact contact, HttpPostedFileBase upload){ 
  if (ModelState.IsValid && status)
  {
    var message = new MailMessage();
    if (upload != null && upload.ContentLength > 0) 
    {
       // 4MB -> 4000 * 1024
       const int maxFileSize = 4096000;
       if (upload.ContentLength < maxFileSize) 
       {
         var document = new File 
         {
           FileName = System.IO.Path.GetFileName(upload.FileName),
           FileType = FileType.Document,
           ContentType = upload.ContentType
         };
         var supportedTypes = new[] {"doc", "docx", "pdf", "jpg"};
         var extension = System.IO.Path.GetExtension(document.FileName);
         if (extension != null)
         {
            var fileExt = extension.Substring(1);
            if (!supportedTypes.Contains(fileExt))
            {
               ModelState.AddModelError("document", "Wrong format");
               return View();
            }
            //this is the line that sends damaged attachments, 
            //I believe I should be using document in some way (using reader bit below), 
            //but whatever I use the code complains or crashes.
            message.Attachments.Add(new Attachment(upload.InputStream, Path.GetFileName(upload.FileName)));

            using (var reader = new System.IO.BinaryReader(upload.InputStream))
            {
            document.Content = reader.ReadBytes(upload.ContentLength);
            //message.Attachments.Add(new Attachment(document.Content, document.FileName));
            }
            contact.Files = new List<File> {document};
        }
      }else
      { 
        ModelState.AddModelError("document", "File too big. Max 4MB.");
      }
   }

编辑:很多时候代码找不到文件,我怎样确保每次都给它正确的路径?

0 个答案:

没有答案