我有读取电子邮件附件的代码,嵌入的和未嵌入的,但如果两者都在同一个电子邮件中,则只读取嵌入的附件。
任何帮助将不胜感激..
我的代码。
{
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);
}
}
}
}
}
}