enviar - Cómo abrir la ventana nueva de Outlook en el servidor C#
send email c# (3)
Si ejecuta ese código en el servidor, ¿quién verá el mensaje recién creado? Incluso si hay un usuario conectado localmente al servidor, IIS se ejecuta sin una sesión de escritorio.
Si desea que el mensaje se muestre en el cliente , allí es donde debe ejecutar su código. ¿Por qué no usar una URL de mailto? Funcionará en cualquier navegador y se abrirá el cliente de correo electrónico predeterminado. Si necesita algo más sofisticado que eso, debe escribir su código en JavaScript y crear una instancia del objeto Outlook.Application utilizando el new ActiveXObject().
Solo puede hacer eso en IE y se debe confiar en que su sitio lo haga.
Estoy usando este enlace para abrir la nueva ventana de correo de Outlook. Cómo abrir Outlook nueva ventana de correo c #
Pero funciona bien en la máquina local, pero cuando lo implementé en el servidor muestra el siguiente error.
La recuperación de la fábrica de clase COM para el componente con CLSID {0006F03A-0000-0000-C000-000000000046} falló debido al siguiente error: 80040154 Clase no registrada (excepción de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
La perspectiva de la oficina de Microoft es instalar en la máquina local, no en el servidor. Se requiere instalar y configurar Outlook en el servidor. Por favor ayuda. Gracias.
1. Usando Outlook
Para enviar un correo electrónico usando Outlook, necesitamos agregar una referencia a la biblioteca de enlace dinámico para Outlook que se llama Microsoft.Office.Interop.Outlook.dll. Para lo mismo, siga los pasos a continuación:
using Outlook = Microsoft.Office.Interop.Outlook;
//method to send email to outlook
public void sendEMailThroughOUTLOOK()
{
try
{
// Create the Outlook application.
Outlook.Application oApp = new Outlook.Application();
// Create a new mail item.
Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
// Set HTMLBody.
//add the body of the email
oMsg.HTMLBody = "Hello, Jawed your message body will go here!!";
//Add an attachment.
String sDisplayName = "MyAttachment";
int iPosition = (int)oMsg.Body.Length + 1;
int iAttachType = (int)Outlook.OlAttachmentType.olByValue;
//now attached the file
Outlook.Attachment oAttach = oMsg.Attachments.Add(@"C://fileName.jpg", iAttachType, iPosition, sDisplayName);
//Subject line
oMsg.Subject = "Your Subject will go here.";
// Add a recipient.
Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients;
// Change the recipient in the next line if necessary.
Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add("[email protected]");
oRecip.Resolve();
// Send.
oMsg.Send();
// Clean up.
oRecip = null;
oRecips = null;
oMsg = null;
oApp = null;
}//end of try block
catch (Exception ex)
{
}//end of catch
}//end of Email Method
Para más información Abrir perspectiva
Actualmente, Microsoft no recomienda, y no admite, la automatización de las aplicaciones de Microsoft Office desde cualquier aplicación o componente de cliente desatendido y no interactivo (incluidos ASP, ASP.NET, DCOM y NT Services), ya que Office puede presentar un comportamiento inestable y / o interbloqueo cuando Office se ejecuta en este entorno.
Si está creando una solución que se ejecuta en un contexto del lado del servidor, debe intentar usar componentes que se hayan hecho seguros para la ejecución desatendida. O bien, debería intentar buscar alternativas que permitan que al menos parte del código se ejecute en el lado del cliente. Si utiliza una aplicación de Office desde una solución del lado del servidor, la aplicación carecerá de muchas de las capacidades necesarias para ejecutarse correctamente. Además, asumirá riesgos con la estabilidad de su solución general.
Lea más sobre eso en Consideraciones para la automatización del lado del servidor del artículo de Office .
Considere usar clases .Net estándar o cualquier otro componente diseñado para la ejecución del lado del servidor. En el caso de una cuenta de Exchange Server, puede usar EWS (Exchange Web Services), ver EWS Managed API, EWS y servicios web en Exchange .