none
Enviar correo con archivo adjunto

    Question

  • Estimados, queria ver si me pueden ayudar tengo un formulario de windows en el cual al dar clic, se deberia ejecutar una consulta para obtener los datos de una tabla, y la informacion que se recupera enviarla por correo como archivo de excel adjunto.

    Por lo que les pido ayuda para ver como podria hacer lo que les indico.

    1. Como podria enviar un correo primero que nada usando los datos que tengo en el outlook, para que se quede registrado en los elementos enviados, o sino abrir el outlook con la ventana de correo nuevo.

    2. Como generaria la informacion en excel para adjuntar el archivo en el correo

    He hecho las pruebas enviando al menos el correo con la claseSystem.Net.Mail, pero el problema de esto es que no queda registrado el envio del correo en el outlook.

    Saludos

     

    Friday, February 11, 2011 8:46 PM

Answers

  • Sip, si usas las librerías del Outlook 2010 , en una pc con 2007, no funciona. pero si  usas las de 2007, en 2010 funcionan.. (tambien puedes copiar la dll en el directorio de la aplicación )

    lo del código de ejemplo  prueba con este.

    try
    			{
    				// Create the Outlook application by using inline initialization.
    				Outlook.Application oApp = new Outlook.Application();
    
    				//Create the new message by using the simplest approach.
    				Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
    
    				//Add a recipient.
    				// TODO: Change the following recipient where appropriate.
    				Outlook.Recipient oRecip = (Outlook.Recipient)oMsg.Recipients.Add("e-mail address");
    				oRecip.Resolve();
    
    				//Set the basic properties.
    				oMsg.Subject = "This is the subject of the test message";
    				oMsg.Body = "This is the text in the message.";
    
    				//Add an attachment.
    				// TODO: change file path where appropriate
    				String sSource = "C:\\setupxlg.txt";
    				String sDisplayName = "MyFirstAttachment";
    				int iPosition = (int)oMsg.Body.Length + 1;
    				int iAttachType = (int)Outlook.OlAttachmentType.olByValue; 
    				Outlook.Attachment oAttach = oMsg.Attachments.Add(sSource,iAttachType,iPosition,sDisplayName);
    
    				// If you want to, display the message.
    				// oMsg.Display(true); //modal
    
    				//Send the message.
    				oMsg.Save();
    				oMsg.Send();
    
    				//Explicitly release objects.
    				oRecip = null;
    				oAttach = null;
    				oMsg = null;
    				oApp = null;
    			}
    
    				// Simple error handler.
    			catch (Exception e)
    			{
    				
    			}
    
    
    


    Live like you'll die tomorrow, learn like you'll live forever. Blog
    Monday, February 14, 2011 4:48 PM
  • Hola Fsigu

    Lo que tienes que hacer es añadir la referencia, en la carpeta References click derecho añadir referencia, búscala en la pestaña COM. Saludos 

    Monday, February 14, 2011 7:45 PM

All replies

  • Saludos,

     

    1) Como enviar correos a traves de outlook con office interop http://www.c-sharpcorner.com/uploadfile/casperboekhoudt/sendingemailsthroughoutlook12052005000124am/sendingemailsthroughoutlook.aspx

     

    2) Como pasar  de un dataset (imagino que así tienes la data) a excel http://www.codeproject.com/KB/office/datasettoexcel.aspx


    Live like you'll die tomorrow, learn like you'll live forever. Blog
    Friday, February 11, 2011 11:02 PM
  • Gracias gregory por responder pero me queda una duda, el enlace que me diste no funciona al pasarlo a visual studio 2008, pero si lo hago de esa forma no me quedo atado a una version de office en especial??. Por eje,plo si agrego referencia de del outllok 2010, y la aplicacion corre en una pc con outllok 2007 si funciona?? Saludos
    Monday, February 14, 2011 2:59 PM
  • Sip, si usas las librerías del Outlook 2010 , en una pc con 2007, no funciona. pero si  usas las de 2007, en 2010 funcionan.. (tambien puedes copiar la dll en el directorio de la aplicación )

    lo del código de ejemplo  prueba con este.

    try
    			{
    				// Create the Outlook application by using inline initialization.
    				Outlook.Application oApp = new Outlook.Application();
    
    				//Create the new message by using the simplest approach.
    				Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
    
    				//Add a recipient.
    				// TODO: Change the following recipient where appropriate.
    				Outlook.Recipient oRecip = (Outlook.Recipient)oMsg.Recipients.Add("e-mail address");
    				oRecip.Resolve();
    
    				//Set the basic properties.
    				oMsg.Subject = "This is the subject of the test message";
    				oMsg.Body = "This is the text in the message.";
    
    				//Add an attachment.
    				// TODO: change file path where appropriate
    				String sSource = "C:\\setupxlg.txt";
    				String sDisplayName = "MyFirstAttachment";
    				int iPosition = (int)oMsg.Body.Length + 1;
    				int iAttachType = (int)Outlook.OlAttachmentType.olByValue; 
    				Outlook.Attachment oAttach = oMsg.Attachments.Add(sSource,iAttachType,iPosition,sDisplayName);
    
    				// If you want to, display the message.
    				// oMsg.Display(true); //modal
    
    				//Send the message.
    				oMsg.Save();
    				oMsg.Send();
    
    				//Explicitly release objects.
    				oRecip = null;
    				oAttach = null;
    				oMsg = null;
    				oApp = null;
    			}
    
    				// Simple error handler.
    			catch (Exception e)
    			{
    				
    			}
    
    
    


    Live like you'll die tomorrow, learn like you'll live forever. Blog
    Monday, February 14, 2011 4:48 PM
  • Gracias gregory, pero no se como corregir un error en esta linea,

    Outlook.Application oApp = new Outlook.Application();

    He puesto un using

    using

     

    Microsoft.Office.Interop.Outlook;

     

    Pero aun asi no se de donde sale el  Outlook.Application, en que clase esta esta, no lo encuentro?.

    Saludos

     

    Monday, February 14, 2011 5:37 PM
  • Hola Fsigu

    Lo que tienes que hacer es añadir la referencia, en la carpeta References click derecho añadir referencia, búscala en la pestaña COM. Saludos 

    Monday, February 14, 2011 7:45 PM