2013-03-22 79 views
0

我創建了一個方法來收集文件夾中的每個文件,然後將它們插入到一個zip文件中。該zip文件然後通過郵件發送給客戶。我的問題是,我可以發送一封附帶zip文件的郵件而不會有任何問題,但是如果另一個用戶生成zip文件併發送它,它將如下所示。將文件添加到Zip並通過郵件發送問題C#

enter image description here

我試圖附加Excel文件到郵件消息時有同樣的問題。但我發現你必須設置你附加的文件的ContentType。並且在添加了這一行之後:ContentType ct = new ContentType("application/vnd.ms-excel");用於其工作的excel文件。我的問題是,我現在想附加一個zip文件,我使用這一行:`ContentType ct = new ContentType(「application/zip」);但這不起作用。我正在使用DotNetZipLib-DevKit-v1.9將文件添加到一個zip文件。

這是我的代碼:

public void SendMailedFilesVallensbaek() 
     { 
      string[] vallensbeakFileNames = Directory.GetFiles(vallensbaekFiles); 
      if (vallensbeakFileNames.Count() > 0) 
      { 
       ContentType ct = new ContentType("application/zip"); 
       string zipFile = [email protected]"\someZipFile.zip"; 
       using (ZipFile zip = new ZipFile()) 
       { 
        foreach (string file in vallensbeakFileNames) 
        { 
          zip.AddFile(file); 
        } 

        zip.Save(zipFile); 
       } 
       using (System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("ares")) 
       { 
        using (System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage()) 
        { 
         msg.From = new MailAddress("[email protected]"); 
         msg.To.Add(new MailAddress("[email protected] ")); 
         msg.Subject = "IBM PUDO"; 
         msg.Body = "Best Regards"; 
         msg.Body += "<br/>"; 
         msg.Body += "me"; 
         msg.IsBodyHtml = true; 

         Attachment attachment = new Attachment(zipFile, ct); 
         msg.Attachments.Add(attachment); 
         //foreach (string file in sentFiles) 
         //{ 
         // Attachment attachment = new Attachment(file, ct); 
         // msg.Attachments.Add(attachment); 
         //} 

         client.Send(msg); 
         client.Dispose(); 
         msg.Dispose(); 
         ct = null; 
        } 
       } 
      } 
     } 
+1

在使用中調用'Dispose'不是必需的。使用塊將自動調用它。 – 2013-03-22 10:40:10

+0

嘗試設置MIME頭'Content-Disposition:attachment;文件名= filename.zip;''附件'上。這可能與Outlook處理附件的方式有關。 – Madushan 2013-03-22 11:16:34

+0

我應該如何在Windows窗體應用程序中做到這一點? – Lahib 2013-03-22 12:08:29

回答

0

您應該檢查zip文件在您的本地文件夾中創建或不 和本地文件夾是能夠通過ASP.NET用戶訪問。

+0

我可以發送附帶zip文件的郵件而不會有任何問題,但是如果另一個用戶生成zip文件併發送它,它將如下所示。 – Lahib 2013-03-22 11:09:24

+1

我建議你使用[IonicZip](http://dotnetzip.codeplex.com/),這個庫很容易,你不需要填寫你的文件的內容類型。順便說一下,你應該檢查包含特殊字符或不包含特殊字符的文件的名稱。 – 2013-03-25 11:24:38

+1

我正在使用IconicZip,並感謝文件名和特殊字符的擡頭。看起來問題在於名稱vallensbæk,特殊字符**Æ**是問題所在。 – Lahib 2013-03-25 12:07:08

相關問題