voto utilizar que marque leídos leidos lectura evitar cómo correos confirmacion como botones automáticamente aparecen c# email outlook

c# - utilizar - evitar que outlook marque automáticamente correos como leídos



Lectura de correo electrónico sin la aplicación de Outlook abierta (6)

Eso es lo que estoy usando para leer un correo electrónico usando C #:

outLookApp.NewMailEx += new ApplicationEvents_11_NewMailExEventHandler(outLookApp_NewMailEx); Outlook.NameSpace olNameSpace = outLookApp.GetNamespace("mapi"); olNameSpace.Logon("xxxx", "xxxxx", false, true); Outlook.MAPIFolder oInbox = olNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); Outlook.Items oItems = oInbox.Items; MessageBox.Show("Total : " + oItems.Count); //Total Itemin inbox oItems = oItems.Restrict("[Unread] = true"); MessageBox.Show("Total Unread : " + oItems.Count); //Unread Items Outlook.MailItem oMsg; Outlook.Attachment mailAttachement; for (int i = 0; i < oItems.Count; i++) { oMsg = (Outlook.MailItem)oItems.GetFirst(); MessageBox.Show(i.ToString()); MessageBox.Show(oMsg.SenderName); MessageBox.Show(oMsg.Subject); MessageBox.Show(oMsg.ReceivedTime.ToString()); MessageBox.Show(oMsg.Body);

El problema que estoy enfrentando es que esta aplicación solo funciona si Outlook está abierto en la máquina. Si Outlook está cerrado arroja una excepción:

El servidor no está disponible. Póngase en contacto con su administrador si esta condición persiste.

¿De todos modos puedo leer el correo electrónico con Outlook abierto?


¿Seguro que quieres usar Outlook como un proxy?

la gente parece tratar un nivel bajo con una tarea así en C # (sorprendentemente no hay ningún componente incorporado en el marco ...)

Con respecto a la respuesta de Mat, Redemption es de hecho un buen producto (lo usé para analizar correos a la llegada a Outlook), pero dudo que pueda funcionar sin perspectiva ejecutándose.


Yo personalmente no usaría Outlook como un proxy. Si intentas monitorear en última instancia un almacén de Exchange, entonces usaría WebDav. Su servidor de Exchange debe admitirlo, pero si lo hace, es una API XML simple. Bueno, el bit API es simple, pero el XML es bastante intrincado. Pero una vez que hayas encapsulado esto en un poco de código, es difícil de usar.



Esta es una vieja pregunta, pero voy a responderla, ya que luché con el mismo problema durante mucho tiempo y las respuestas anteriores en esta página no me ayudaron mucho.

Tuve que escribir un programa y usar Outlook para enviar un correo electrónico en diferentes máquinas con diferentes niveles de UAC y esto es lo que surgió después de un largo tiempo.

using Outlook = Microsoft.Office.Interop.Outlook; // Create the Outlook application. Outlook.Application oApp = null; // Check whether there is an Outlook process running. int outlookRunning = Process.GetProcessesByName("OUTLOOK").Length; if (outlookRunning > 0) { // If so, use the GetActiveObject method to obtain the process and cast it to an Application object. try { oApp = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application; } catch (Exception) { oApp = Activator.CreateInstance(Type.GetTypeFromProgID("Outlook.Application")) as Outlook.Application; } finally { // At this point we must kill Outlook (since outlook was started by user on a higher prio level than this current application) // kill Outlook (otherwise it will only work if UAC is disabled) // this is really a kind of last resort Process[] workers = Process.GetProcessesByName("OUTLOOk"); foreach (Process worker in workers) { worker.Kill(); worker.WaitForExit(); worker.Dispose(); } } } else { // If not, create a new instance of Outlook and log on to the default profile. oApp = new Outlook.Application(); Outlook.NameSpace nameSpace = oApp.GetNamespace("MAPI"); try { // use default profile and DO NOT pop up a window // on some pc bill gates fails to login without the popup, then we must pop up and lets use choose profile and allow access nameSpace.Logon("", "", false, Missing.Value); } catch (Exception) { // use default profile and DO pop up a window nameSpace.Logon("", "", true, true); } nameSpace = null; } // Done, now you can do what ever you want with the oApp, like creating a message and send it // Create a new mail item. Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);



Es probable que se encuentre con esto cuando Outlook esté cerrado.

Además de seguir este tutorial, se asegurará de que está haciendo todos los pasos correctos.

¡La mejor de las suertes!