none
Guardar emails con adjuntos como .msg en disco duro RRS feed

  • Pregunta

  • Hola a todos
    Estimados, quisiera consultarles como podria grabar en mi disco duro los emails que recibo. En la empresa existe el servidor Exchange 2000 y outlook 2007. Por lo cual se requiere de una aplicacion donde cada usuario pueda leer su buzon de entrada y al seleccionar algunos correos los pueda guardar dichos en una base de datos como bytes junto a otros datos complementarios.

    He buscado informacion pero no encuentro nada similar. Por lo cual pienso que mi aplicacion en VBNET debera grabar los correos seleccionados en el disco y luego ya podria pasarlos a bytes.

    Por favor sus comentarios

    Gracias

    lunes, 3 de junio de 2013 16:02

Respuestas

  • Hola!

    Necesitaría utilizar las interop assemblies. en este caso Interop.Outlook.

    Algo así podrías hacer

    using Outlook = Microsoft.Office.Interop.Outlook; private void button1_Click(object sender, EventArgs e) { Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application(); Outlook.NameSpace ns = app.GetNamespace("MAPI"); Outlook.MAPIFolder inbox = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

    foreach (object obj in inbox.Mapi.Items)
    {
       
    try
       
    {                       
             msg
    = obj as Outlook.MailItem;
            
    // ... set file name using message attributes
            
    // string fullPath = "something" + ".msg"
             msg
    .SaveAs(fullPath, Outlook.OlSaveAsType.olMSG);
        
    }
    } }



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    • Marcado como respuesta M4rk00s miércoles, 5 de junio de 2013 20:29
    martes, 4 de junio de 2013 7:30

Todas las respuestas

  • Hola!

    Necesitaría utilizar las interop assemblies. en este caso Interop.Outlook.

    Algo así podrías hacer

    using Outlook = Microsoft.Office.Interop.Outlook; private void button1_Click(object sender, EventArgs e) { Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application(); Outlook.NameSpace ns = app.GetNamespace("MAPI"); Outlook.MAPIFolder inbox = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

    foreach (object obj in inbox.Mapi.Items)
    {
       
    try
       
    {                       
             msg
    = obj as Outlook.MailItem;
            
    // ... set file name using message attributes
            
    // string fullPath = "something" + ".msg"
             msg
    .SaveAs(fullPath, Outlook.OlSaveAsType.olMSG);
        
    }
    } }



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    • Marcado como respuesta M4rk00s miércoles, 5 de junio de 2013 20:29
    martes, 4 de junio de 2013 7:30
  • Hola!

    No estoy de acuerdo con que haya que utilizar las interop assemblies, con VBA se resuelve sin problema alguno, lo tengo hecho en algún sitio pero desgraciadamente no lo encuentro,


    Saludos a todos desde Huelva
    http://www.mvp-access.es/emilio/

    martes, 4 de junio de 2013 17:17
  • Sergio, gracias por tu aporte.

    Lo implemente en un Winforms y primero estos listando mis emails en un GRID, pues solo quisero seleccionar algunos para guardarlos en el disco. Al ejecutar desde VS me muestra un mensaje en Cuadro de dialogo "Un programa intenta obtener acceso a direcciones de correo de Outlook. " y tengo que darle Permitir (10min) para que deje ejecutar el programa. Como podria evitar este dialogo desde codigo, pues la aplicacion debe leer solo los correos del usuario que ha iniciado sesion en la PC.

    Saludos

    martes, 4 de junio de 2013 17:53
  • Eso es de configuración del Outlook. Abrrlo has a archivo/opciones/centro de confianza/avanzado/ permitir por programación...mas o menos es que ahora no estoy en casa para mostrarte imagen

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    martes, 4 de junio de 2013 18:34
  • Esto es lo que te decia

    http://www.slipstick.com/outlook-developer/change-programmatic-access-options/


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    martes, 4 de junio de 2013 21:03
  • Buen dato

    Lo halle desde Herramientas / Centro de confianza ... / Acceso mediante programacion.

    miércoles, 5 de junio de 2013 20:28