C sharp - enviar reporte por mail

   
Vista:

enviar reporte por mail

Publicado por sandra  (4 intervenciones) el 29/04/2008 16:56:55
Buenos días, agradecería inmensamente su ayuda; ya que tengo mi aplicativo en C#.net 2005 y generé mi reporte en el crystal report que trae .net; pero el problema es que tengo que darle la opción a mis usuarios de enviar ese reporte por mail.

Cómo lo puedo hacer????

Mil gracias a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:enviar reporte por mail

Publicado por Iván K (55 intervenciones) el 29/04/2008 19:12:14
Esto yo lo hago aparte mediante el espacio de nombres System.Web.Mail mandando el reporte en Crystal como archivo adjunto en formato PDF de la siguiente manera:

try
{
string strTempArchivo = Path.GetTempPath() + strArchivoEmail, strSmtp;
string strConfigNamespace = "http://schemas.microsoft.com/cdo/configuration/";
reporte.ExportToDisk(ExportFormatType.PortableDocFormat, strTempArchivo);
MailMessage mail = new MailMessage();

mail.Fields.Add(strConfigNamespace + "smtpserver", "Aqui va servidor SMTP");
mail.Fields.Add(strConfigNamespace + "smtpserverport", 25);
mail.Fields.Add(strConfigNamespace + "sendusing", 2);
mail.Fields.Add(strConfigNamespace + "smtpauthenticate", 1);
mail.Fields.Add(strConfigNamespace + "sendusername", "aqui va nombre de usuario");
mail.Fields.Add(strConfigNamespace + "sendpassword", "Aqui va la contraseña");

mail.From = "email_origen@123.com";
mail.To = "email_destino@123.com";
mail.Subject = "Asunto";
mail.BodyFormat = MailFormat.Html;
mail.Body = "Mensaje";

MailAttachment maReporte = new MailAttachment(strTempArchivo,
MailEncoding.Base64);
mail.Attachments.Add(maReporte);
SmtpMail.Send(mail);
mail = null;
maReporte = null;
}
catch (Exception er)
{
MessageBox.Show(er.Message);
}

A ver si esto te sirve ya tu tienes que ver tu configuración de Correo para completar el código. Lo que uso es la exportación de reporte a PDF y lo creo en la carpeta temporal de Windows para poder enviarlo desde ahí.

Hojalá y esto te ayude de algo.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:inquietud

Publicado por sandra (4 intervenciones) el 29/04/2008 21:38:19
Hola Iván, gracias por la información, lo trabajaré y cualquier cosa vuelvo a molestarte.

Pero antes de intentarlo, me gustaría preguntarte algo sobre el código para tener claro lo que estoy haciendo:

string strTempArchivo = Path.GetTempPath() + strArchivoEmail, strSmtp;
string strConfigNamespace = "http://schemas.microsoft.com/cdo/configuration/";
reporte.ExportToDisk(ExportFormatType.PortableDocFormat, strTempArchivo);

Que hace estas líneas?? strTempArchivo es el archivo temporal??

En el código donde indicas en que ubicación está el archivo???

Gracias

Saluditos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:inquietud

Publicado por Iván K (55 intervenciones) el 30/04/2008 00:07:54
Que honda Sandra, primeramente perdón por no haberte indicado que son las variables 'strArchivoEmail' y 'strSmtp' es que lo copie de un código que tengo en donde hago uso de varias variables y no te indique para que son, olvidate de la variable 'strSmtp' quítala, en la variables almaceno lo que sería el nombre del archivo pdf que agregaría como adjunto por lo que la instrucción:

string strTempArchivo = Path.GetTempPath() + strArchivoEmail;

la puedes cambiar por:

string strTempArchivo = Path.GetTempPath() + "reporte.pdf";

si la variable 'strTempArchivo' es el archivo temporal, lo que hace la función 'Path.GetTempPath()', que por cierto tiendrias que hacer uso del espacio de nombres 'System.IO' (declárala con la cláusula 'using'), entonces la función te retorna la trayectoria a la carpeta que utiliza Windows como temporal por ejemplo en mi máquina esta línea de código regresaría "C:Documents and SettingsDesarrollo SoftwareConfiguración localTemp eporte.pdf" pero si se te complica guarda temporalmente el archivo pdf en C: ("C: eporte.pdf")

la variable reporte sería en si tu reporte en cystal ya inicializado (el que vas a mandar por correo), por ejemplo, si tiengo un reporte de empleados llamado rptEmpleado entonces lo inicializaría de la siguiente manera:

rptEmpleado reporte = new rptEmpleado();

entonces lo que hace el método ExportToDisk() es exportar este reporte con el formato que le especifiques, en este caso 'CrystalDecisions.Shared.ExportFormatType.PortableDocFormat' y el nombre que le dará a ese archivo exportado, en este caso a la carpeta de Windows temporal con el nombre 'reporte.pdf' que te explique anteriormente.

Entonces con esto ya crea el archivo pdf del reporte listo para mandarlo por correo mediante las instrucciones:

MailAttachment maReporte = new MailAttachment(strTempArchivo, MailEncoding.Base64);
mail.Attachments.Add(maReporte);
SmtpMail.Send(mail);

Hojalá y me haya explicado.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar