2011-05-27 75 views
30

Estoy buscando una forma de abrir un nuevo correo en la ventana de Outlook.Cómo abrir Outlook nueva ventana de correo C#

necesito llenar programically: desde, hacia, asunto, cuerpo información, pero deje esta nueva ventana de correo abierto, así que el usuario puede verificar el contenido/añadir algo a continuación, enviar msg normales como Outlook.

encontró que:

Process.Start(String.Format(
"mailto:{0}?subject={1}&cc={2}&bcc={3}&body={4}", 
    address, subject, cc, bcc, body)) 

Pero no hay "De" opción (mis usuarios tienen más de un buzón ...)

Cualquier consejo (s)?

+0

¿Hay algún motivo por el que no esté utilizando vbscript para aplicaciones dentro de Outlook? En última instancia, si lo desea, podría iniciar fácilmente la aplicación de Outlook desde C#, tener una regla dentro de Outlook que se ejecute al inicio que lo rellene desde una macro de vbscript. Como espera editarlo en una interfaz gráfica de usuario, mi pregunta sigue siendo: ¿necesita una solución específica de C#, o solo está preguntando como cree que tiene que usar C#? – tjborromeo

Respuesta

41

I'cve finalmente resuelto esa cuestión Aquí es una pieza de código de resolver mi problema (con el uso de Outlook Interops)

Outlook.Application oApp = new Outlook.Application(); 
Outlook._MailItem oMailItem = (Outlook._MailItem)oApp.CreateItem (Outlook.OlItemType.olMailItem); 
oMailItem.To = address; 
// body, bcc etc... 
oMailItem.Display (true); 
+0

Al usar este código recibo una excepción. – papaiatis

+0

Gracias, funciona genial. – mack

+0

Cuando ejecuto algo similar cuando mi Outlook no está abierto, Outlook se abre y veo el cuadro de diálogo modal de correo electrónico, sin embargo, Outlook se cierra inmediatamente tan pronto como el usuario acceda a enviar y el correo electrónico queda bloqueado en la Bandeja de salida. ¿Alguien ha tenido este problema? – user1198049

0

No puede hacer esto con mailto. O bien su cliente tendrá que seleccionar la cuenta desde la que está enviando, que se predetermina a su cuenta predeterminada o tendrá que proporcionar un formulario de correo y configurar los encabezados cuando envíe el correo electrónico.

+0

Sé que no puedo hacer eso - por eso estoy buscando una opción diferente - vi que algunas aplicaciones administraban eso, así que debe ser de alguna manera ... – Maciej

4

Aquí es lo que he intentado. Está funcionando como se esperaba.

Esta aplicación Agregar destinatarios, agregar cc y agregar asunto y abrir una nueva ventana de correo.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Threading; 
using Outlook = Microsoft.Office.Interop.Outlook; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void ButtonSendMail_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      List<string> lstAllRecipients = new List<string>(); 
      //Below is hardcoded - can be replaced with db data 
      lstAllRecipients.Add("[email protected]"); 
      lstAllRecipients.Add("[email protected]"); 

      Outlook.Application outlookApp = new Outlook.Application(); 
      Outlook._MailItem oMailItem = (Outlook._MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem); 
      Outlook.Inspector oInspector = oMailItem.GetInspector; 
      // Thread.Sleep(10000); 

      // Recipient 
      Outlook.Recipients oRecips = (Outlook.Recipients)oMailItem.Recipients; 
      foreach (String recipient in lstAllRecipients) 
      { 
       Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add(recipient); 
       oRecip.Resolve(); 
      } 

      //Add CC 
      Outlook.Recipient oCCRecip = oRecips.Add("[email protected]"); 
      oCCRecip.Type = (int)Outlook.OlMailRecipientType.olCC; 
      oCCRecip.Resolve(); 

      //Add Subject 
      oMailItem.Subject = "Test Mail"; 

      // body, bcc etc... 

      //Display the mailbox 
      oMailItem.Display(true); 
     } 
     catch (Exception objEx) 
     { 
      Response.Write(objEx.ToString()); 
     } 
    } 
} 
+0

¿Cómo se cancela el envío de un correo electrónico si el usuario lo cancela utilizando el botón de cancelación de Outlook? – singhswat

+0

El código solo genera una nueva ventana de correo electrónico con los campos Para: y Asunto rellenados y lo muestra. Depende del usuario enviar el correo electrónico (o no), por lo que si la ventana del correo electrónico se cierra (no se envía), el correo electrónico no se enviará. –

Cuestiones relacionadas