Foros del Web » Programación para mayores de 30 ;) » .NET »

Mandar correos a varios destinatarios sin que truene

Estas en el tema de Mandar correos a varios destinatarios sin que truene en el foro de .NET en Foros del Web. Hola a todos!!! Quisiera saber como envio correos en vb.net en donde en el To (para) lleve un monton de destinatarios pero que mande el ...
  #1 (permalink)  
Antiguo 04/10/2007, 12:01
 
Fecha de Ingreso: octubre-2005
Mensajes: 180
Antigüedad: 19 años, 1 mes
Puntos: 0
Mandar correos a varios destinatarios sin que truene

Hola a todos!!!

Quisiera saber como envio correos en vb.net en donde en el To (para) lleve un monton de destinatarios pero que mande el correo si por lo menos una direccion de correo es valida.. Por ke ahorita tengo ya el codigo que lo hace pero el problema esta en que si en el to lleva una direccion de correo que no exista no mas no envia ese correo a todos los destinatarios, y tmb quisiera saber cual o cuales son esos correos que no se pudieron enviar; tipo delivery de hotmail o outlook.

No lo quiero hacer con un for, es decir enviar un correo para cada cliente, debido a que son como 10000 correos al dia, y son como 3000 usuarios a los que hay que enviarles esos 10000 correos, eso saturaria el servidor de correos.

Cualquier ayuda o sugerencia se los agradecere...

Les pongo el codigo que uso:

Código:
 Dim oMsg As MailMessage = New MailMessage()

        ' TODO: Reemplace con la dirección de correo electrónico del remitente. 
        oMsg.From = "[email protected]"
        ' TODO: Reemplace con la dirección de correo electrónico del destinatario. 
        oMsg.To = "[email protected],destinatario2@dominio1        .com,[email protected]"
        oMsg.Subject = "Enviar con Web Mail"

        ' ENVIAR EN FORMATO HTML 
        oMsg.BodyFormat = MailFormat.Html

        'HTML Body (quite las etiquetas HTML para el texto sin formato). 
        oMsg.Body = "<HTML><BODY><B>¡Prueba desde .net!</B></BODY></HTML>"

        ' AGREGAR UN ARCHIVO ADJUNTO. ' TODO: Reemplace con la ruta de acceso del archivo adjunto. 
        Dim sFile As String = "C:\1.pdf"
        Dim oAttch As MailAttachment = New MailAttachment(sFile, MailEncoding.Base64)

        oMsg.Attachments.Add(oAttch)

        ' TODO: Reemplace con el nombre de su servidor SMTP remoto. 
        'SmtpMail.SmtpServer
        SmtpMail.SmtpServer = "mail.dominio.com"

        Try
            SmtpMail.Send(oMsg)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

        oMsg = Nothing
        oAttch = Nothing
__________________
El conocimiento se alimenta de la repeticion y la consistencia!!! (Miguel--in-- 1983---....)
  #2 (permalink)  
Antiguo 08/10/2007, 08:22
 
Fecha de Ingreso: octubre-2005
Mensajes: 180
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Mandar correos a varios destinatarios sin que truene

Ya estufas, agregando las funcionalidades del outlook se puede lograr. Debes de agregar la referencia que esta en COM y que se denomina Microsoft Outlook Lybrary 10.0 (o la versión que tengas).

Este es el codigo empleado:

Código:
  Dim m_OutLook As Outlook.Application

        Try

            '* Creamos un Objeto tipo Mail 

            Dim objMail As Outlook.MailItem

            '* Inicializamos nuestra apliación OutLook 

            m_OutLook = New Outlook.Application


            '* Creamos una instancia de un objeto tipo MailItem 

            objMail = m_OutLook.CreateItem(Outlook.OlItemType.olMailItem)


            '* Asignamos las propiedades a nuestra Instancial del objeto 

            '* MailItem 

            objMail.To = "[email protected];[email protected];[email protected]; [email protected]"

            objMail.Subject = "Prueba de integración con Outlook"

            objMail.Body = "Esto es una prueba de integración de WorkFlow con Outlook"

            '* Enviamos nuestro Mail y listo! 

            objMail.Send()


            '* Desplegamos un mensaje indicando que todo fue exitoso 

            'MessageBox.Show("Mail Enviado", "Integración con OutLook", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

        Catch ex As Exception

            '* Si se produce algun Error Notificar al usuario 

            MessageBox.Show("Error enviando mail")


        Finally

            m_OutLook = Nothing


        End Try
__________________
El conocimiento se alimenta de la repeticion y la consistencia!!! (Miguel--in-- 1983---....)
  #3 (permalink)  
Antiguo 16/03/2008, 20:01
 
Fecha de Ingreso: octubre-2004
Mensajes: 39
Antigüedad: 20 años
Puntos: 1
Re: Mandar correos a varios destinatarios sin que truene

Hola, he probado tu método y en local funciona perfectamente, pero es posible hacerlo funcionar en mi servidor donde tengo alojadas las webs?

Me pide el Microsoft.Office.Interop.Outlook
  #4 (permalink)  
Antiguo 16/03/2008, 21:02
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 17 años, 2 meses
Puntos: 87
Re: Mandar correos a varios destinatarios sin que truene

Bueno aqui entraria un pequeño detalle, si estas haciendo envio de listas de correo o notificaciones, el tener multiples destinatarios en un mismo destinatario visibles es peligroso para la integridad de tu informacion. Si utilizas un BCC (Con Copia Oculta) Corres el riesgo de que los servidores de mail convencionales envien tus correos a spam.

Porque no hacer algo asi

MailMessage mensaje = new MailMessage();
.....
mensaje.To.Add(direccion1);
mensaje.To.Add(direccion2);
SmtpClient cliente = new SmtpClient();
....
bool ban = true;
while(ban==true)
{
try
{
cliente.Send(mensaje);
ban = false;
}
catch(SmtpFailedRecipientException ex)
{
mensaje.To.Remove(new MailAddress(ex.FailedRecipient));
ban = true;
}
}


garantizarias que si no se envia a una de las tantas direcciones esta sea removida y se reintente reenviar, ademas al ser parte del framework no necesitas estar llamando al interop de Outlook.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5

Última edición por Peterpay; 16/03/2008 a las 21:15
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:44.