0

我有读取电子邮件附件的代码,嵌入的和未嵌入的,但如果两者都在同一个电子邮件中,则只读取嵌入的附件。

任何帮助将不胜感激..

我的代码。

{
        string strFiltro = String.Format("SINCE {0}-{1}-{2} BEFORE {3}-{4}-{5} {6} ",
                                      strDiaInicial,
                                      strMesInicial,
                                      strAnioInicial,
                                      strDiaFinal,
                                      strMesFinal,
                                      strAnioFinal,
                                      (this.MensajesNoLeidos == true ? "UNSEEN" : "ALL"));

        IEnumerable<Message> mensajesFiltrados = folder.Search(strFiltro/*MessageFetchMode.Full,10*/);
        mensajesFiltrados = mensajesFiltrados.Where(x => x.Attachments.Count() > 0 || x.EmbeddedResources.Count() > 0);

        foreach (Message message in mensajesFiltrados)
        {
            if (message.Attachments.Count() > 0)
            {
                ArchivosAdjuntosFiltrados = message.Attachments.Where(x => x.ContentType.Name.ToLower().Contains(".pdf")) x.ContentType.Name.ToLower().Contains(".xml"));
                resultado[0] = resultado[0] + ArchivosAdjuntosFiltrados.Count();
            }
            else
            {
                if (message.EmbeddedResources.Count() > 0)
                {
                    //never get Embedded pdf or xml files ArchivosAdjuntosFiltrados = message.EmbeddedResources.Where(x => x.ContentType.Name.Contains(".pdf") || x.ContentType.Name.Contains(".xml"));

                }
            }
        }
        foreach (Attachment atachemtn in ArchivosAdjuntosFiltrados)
        {
            strNombreArchivo = atachemtn.FileName;
            String attachData = atachemtn.GetTextData().Replace('-', '+'); attachData = attachData.Replace('_', '/');

            if (intPosicion > 0)
            {
                attachData = attachData.Substring(0, attachData.Length - 31);
            }

            if (strNombreArchivo != String.Empty)
            {
                if (File.Exists(Path.Combine(strRutaDescargas, atachemtn.FileName)) == true)
                {
                    if (pBlnSobreescribirArchivos == true)
                    {

                        byte[] data = Convert.FromBase64String(attachData);
                        File.WriteAllBytes(Path.Combine(this.strRutaDescargas, strNombreArchivo), data);
                    }
                }
            }
        }
    }
}
4

0 回答 0