2015-10-01 3 views
1

Я пытаюсь загрузить вложение электронной почты из электронного письма, хранящегося в моем почтовом ящике Gmail. Используя S22.Imap lib (https://github.com/smiley22/S22.Imap) Я получаю список сообщений, а затем перебираю их для загрузки вложений. Проблема у меня в том, что MailMessage.Attachments.Count всегда 0, даже если файл определен. Вот мой код для загрузки вложений.S22.Imap Attachment Count Always Return 0

  foreach (MailMessage m in messages) 
      { 
       if(m.Subject.Contains("Activity Statement") && (m.Attachments.Count > 0)) 
       { 
        foreach (Attachment a in m.Attachments) 
        { 
         var fileStream = File.Create(Properties.Settings.Default.ETL_ATTACHMENT_PROCESSING_DIR + a.Name); 
         a.ContentStream.Seek(0, SeekOrigin.Begin); 
         a.ContentStream.CopyTo(fileStream); 
         fileStream.Close(); 
        } 
       } 
      } 

ответ

0

Там вы идете .. Net.Mail.Attachment.ContentStream предоставит вам поток, который вы можете скопировать в файл. Чтобы проверить размер, используйте ContentStream.Length

foreach (Attachment attachment in message.Attachments) 
{ 
    byte[] allBytes = new byte[attachment.ContentStream.Length]; 
    int bytesRead = attachment.ContentStream.Read(allBytes, 0, (int)attachment.ContentStream.Length); 
    string destinationFile = @"C:\\Path\\" + attachment.Name; 
    BinaryWriter writer = new BinaryWriter(new FileStream(destinationFile, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)); 
    writer.Write(allBytes); 
    writer.Close(); 
} 
+1

message.Attachments всегда пуст, поэтому код сохранения вложений никогда не запускается. Даже когда есть определенная привязанность в сообщении, похоже, она не забирает ее. Возможно, я не совсем понимаю состав IMAP-сообщения? –

+0

Возможно, вы захотите дать [MailKit] (https://github.com/jstedfast/MailKit) попытку. – jstedfast

+1

Относительно статуса прикрепления: некоторые части тела считаются вложениями, некоторые из них объявлены не такими, но многие (возможно, большинство) не объявлены, а классификация зависит от читателя. S22, и вы вполне можете не согласиться с тем, как классифицировать что-то. Если S22 делает попытку. Я подозреваю, что Mailkit согласится с вами больше. – arnt