2013-03-21 10 views
5

Ho creato un'applicazione al lavoro che genera file exel da alcuni dati di database. Dopo aver generato i file vengono inviati automaticamente ai clienti in questione. Il mio problema è che funziona bene quando eseguo l'applicazione pubblicata. Ma alcuni utenti quando eseguono l'applicazione, i file vengono generati perfettamente mentre vengono salvati sull'HDD e posso vederli. Ma quando vengono collegati all'oggetto MailMessage vengono corrotti. Questa è un'immagine dei file corrotti. Questi file dovrebbero essere file di Excel.Il file è danneggiato quando li si collega a MailMessage C#

enter image description here

Questo è il mio codice per l'invio di una mail con file allegati:

public void SendMailedFilesDK() 
     { 
      string[] sentFiles = Directory.GetFiles(sentFilesDK); 
      if (sentFiles.Count() > 0) 
      { 
       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.To.Add(new MailAddress("[email protected]")); 
         msg.CC.Add("[email protected]"); 
         msg.CC.Add("[email protected]"); 
         msg.Subject = "IBM PUDO"; 
         msg.Body = sentFiles.Count() + " attached file(s) has been sent to the customer(s) in question "; 
         msg.IsBodyHtml = true; 
         foreach (string file in sentFiles) 
         { 
          Attachment attachment = new Attachment(file); 
          msg.Attachments.Add(attachment); 
         } 

         client.Send(msg); 
        } 
       } 
      } 
     } 

Perché i file di venire corrotto quando gli altri eseguono l'applicazione? Tutti utilizziamo l'ufficio 2010.

risposta

1

È necessario assicurarsi di impostare il tipo di contenuto dell'attaccamento sul valore appropriato.

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet per i file XLSX, o

application/vnd.ms-excel per i file XLS.

Ad esempio, il ciclo dovrebbe essere simile a questo.

+0

Cosa devo scrivere se si tratta di un file Zip che devo attaccare? Ho provato a inserire questa riga: ** allegato allegato = nuovo allegato (zipFile, MediaTypeNames.Application.Zip); ** ma non ha funzionato. Sto usando ** DotNetZipLib-DevKit-v1.9 ** – Lahib

+0

trovato. Devo usare 'application/zip' – Lahib

0

È possibile specificare il tipo di codice che fa parte di uno dei costruttori nella classe Allegato.

Allegato pubblico (string fileName, ContentType contentType);

È anche possibile leggere il file in memorystream e passarlo come parte del seguente costruttore.

Allegato pubblico (stream contentStream, string name, string mediaType);

1

Lo utilizziamo nel nostro costruttore di allegati e non abbiamo problemi con il collegamento di Excel e PDF.

Dati allegato = nuovo Allegato (sFileName, MediaTypeNames.Application.Octet);

Verificare inoltre che gli utenti che lo eseguono dispongano delle autorizzazioni per accedere ai file in qualsiasi posizione specificata da inviatoFilesDK.