Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASPX (.net) (http://www.forosdelweb.com/f78/)
-   -   Problema con clase statica y objeto... C#2.0 (http://www.forosdelweb.com/f78/problema-con-clase-statica-objeto-c-2-0-a-493338/)

chcma 28/05/2007 09:30

Problema con clase statica y objeto... C#2.0
 
Hola buenas tardes gente !!!


Verán, tengo una clase estatica para mandar eMails la cual recibe un parametro que es un objeto PDFDocument, para mandar dicho objeto como un adjunto.

Bien, el problema es el siguiente, creo dos objetos de este tipo para mandar el correo a cuatro personas:
Código:

PdfDocument objDocumentoFabricante = GeneraDocumentoFabricante(txtRutaImagen);
PdfDocument objDocumentoRepresentante = GeneraDocumentoRepresentante(txtRutaImagen);

                UtilidadesWeb.EnviarCorreo("", this.Organizacion.Email, "[email protected]", "Fabricante Solicitud Num. " + _idExpediente.ToString(), "", objDocumentoFabricante);
                UtilidadesWeb.EnviarCorreo("", this.Solicitante.Email, "[email protected]", "Representante Solicitud Num. " + _idExpediente.ToString(), "", objDocumentoRepresentante);
                UtilidadesWeb.EnviarCorreo("", "[email protected]", "[email protected]", "Fabricante Solicitud Num. " + _idExpediente.ToString(), "", objDocumentoFabricante);
                UtilidadesWeb.EnviarCorreo("", "[email protected]", "[email protected]", "Representante Solicitud Num. " + _idExpediente.ToString(), "", objDocumentoRepresentante);


Bueno, en el método EnviarCorreo salvo el objeto PdfDocument en un Stream para pasarlo como Attachment. Ok, me funciona perfecto pero solo la primera vez !!!.

Es decir, el objDocumentoFabricante y el objDocumentoRepresentante se envian correctamente a los dos primeros destinatarios, pero los dos segundos les llega el PDF corrupto.

Me da la impresión de que estoy mandando los objetos por referencia y en el método EnviarCorreo les sucede algo a cada objeto, que la segunda vez que los utilizo llegan corruptos.... pero... si no estoy poniendo la palabra ref delante... ¿Por qué me está pasando esto?, ¿Como puedo hacer que lo que pase al método EnviarCorreo sea un objeto por valor y no uno por referencia?

En fin, espero puedan ayudarme, se lo agradecería.

Saludos.

xknown 28/05/2007 10:04

Re: Problema con clase statica y objeto... C#2.0
 
Todos los objetos siempre pasan por referencia, si quieres pasar una copia deberías implementar la interface ICloneable.

Pero viendo el problema, me parece que sería mejor que modificaras tu método para que te permita enviar esos documentos a una lista de correos (hint: usa copia de carbón [oculta]).

Saludos

chcma 28/05/2007 10:21

Re: Problema con clase statica y objeto... C#2.0
 
Buenas XKnow, gracias por contestar.

En verdad tenía pensado enviar el eMail en una lista:
Código:

MailMessage Mensaje = new MailMessage(Remitente, Destinatarios, Asunto, Cuerpo);
Donde Destinatarios serían: "unhadir, otradir, otramas"

Sin embargo, cuando intenta mandar a la 1ª direccion y esta no existe o falla, se produce una excepción (La cual tengo controlada) pero no me sigue con el envio de Mails a las demás direcciones SI validas....

¿Como puedo hacer para que el SMTPClient, al enviar un eMail a varias personas, si falla una dirección, siga enviando a las demás?

xknown 28/05/2007 10:38

Re: Problema con clase statica y objeto... C#2.0
 
No agregues de ese modo los destinatarios, hazlo a través de la colección de CC o Bcc, el siguiente ejemplo no me manda ningún error.
Código:

MailMessage mensaje = new MailMessage();
mensaje.From = new MailAddress("[email protected]");

mensaje.Subject = "test";

// Cuentas inexistentes
mensaje.Bcc.Add("[email protected]");
mensaje.Bcc.Add("[email protected]");

SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true;
client.Credentials = new NetworkCredential("[email protected]", "mi_contraseña");

client.Send(mensaje);

Saludos


La zona horaria es GMT -6. Ahora son las 01:47.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.