Visual Basic.NET - Problema con envios de correos repetidos

 
Vista:
Imágen de perfil de juan carlos
Val: 34
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por juan carlos (18 intervenciones) el 25/04/2018 06:44:52
Hola chicos, tiempo sin pasar por aqui (y sin programar tabien), no soy programador de profesion, solo aficionado y me divierto mucho codificando y me desestreso tambien, pero ultimamente en la oficina me han pedido que diseñe un programa que le envie correos a una base de datos pequeña, buscando por aqui y por alla he podido reciclar algunos codigos que he conseguido por todos lados, ya que no me he podido meter con el tema de bases de datos a profundidad y tampoco soy programador de oficio, es algo que estoy asumiendo como un favor para un amigo, bien para no agobiar tanto con la charla voy al grano: el codigo a continuacion hace perfectamente lo que necesito, que es enviar el mismo correo a varias personas casi al mismo tiempo, por ese lado no tengo ningun problema, pero al revisar las bandejas de entradas de los correos que reciben los mails, me he dado cuenta de que en el correo receptor en la parte que dice "para:" aparecen los correos a quien se les evio el email (en la parte del CCO creo que asi se le llama) y no quiero que eso suceda, tambien me di cuenta de que al primer registro de la base de datos el mismo correo se envia 10 veces (el numero de registros que tengo en la bases de datos es 10 por el momento) no quiero imaginar si llego a tener 60 o mas registros, hasta aqui es todo, pueden sugerir todo lo que sea necesario a fin de depurar este codigo porque se que hay algunos comando o parametros que estan de mas, les estare inmensamente agradecido.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Imports System.Data.SQLite
Imports System.Net.Mail
 
Public Class Form1
    Dim cadena As String = "la cadena de conexion de mi base de datos"
    Dim conn As New SQLiteConnection
    Dim cmd As New SQLiteCommand
    Dim sql As String
 
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        conn = New SQLiteConnection(cadena)
        conn.Open()
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim mail As New MailMessage
        Dim MiDataSet As New DataSet
        Dim comando As New SQLiteDataAdapter("SELECT correo FROM correos", conn)
        Dim direccionaenviar As String
 
        Try
            comando.Fill(MiDataSet)
            comando = Nothing
            Dim Row
            For Each Row In MiDataSet.Tables(0).Rows
                direccionaenviar = Row("correo").ToString
                mail.From = New MailAddress("elcorreodequienenvia", "nosequeponeraquiypusecualquiercosa")
                mail.To.Add(direccionaenviar)
                mail.Subject = (TextBox2.Text) 'aqui pongo el asunto
                mail.Body = (RichTextBox1.Text) 'aqui pongo el cuerpo del mensaje
                Dim servidor As New SmtpClient("smtp.live.com") 'el correo de quien envia es hotmail
                servidor.Port = 587 'este puerto me funciona a la perfeccion
                servidor.EnableSsl = True
                servidor.Credentials = New System.Net.NetworkCredential("correodelemisor", "clavedelcorreoemisor")
                servidor.Send(mail)
                MiDataSet = Nothing
                conn.Close()
            Next
 
            MsgBox("mensajes enviados con exito felicidades")
        Catch ex As Exception
            MsgBox("error en    " + ex.ToString)
        End Try
 
 
    End Sub
End Class
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
Imágen de perfil de kingk
Val: 9
Ha aumentado su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por kingk (76 intervenciones) el 25/04/2018 21:32:56
Hola, el problema que veo es que realizas el envio de mensajes dentro del bucle for each, lo mejor sería incluir dentro del for each solo la parte donde agregas los correos a los que se debe enviar el mensaje. Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim mail As New MailMessage
Dim ds As New DataSet
Dim dap As New OleDbDataAdapter("Select correo from correos", con)
Dim direccionAEnviar As String
Try
    dap.Fill(ds)
    dap = Nothing
    mail.From = New MailAddress("correoemisor")
    mail.Subject = TextBox1.Text
    mail.Body = RichTextBox1.Text
    Dim row As DataRow
    For Each row In ds.Tables(0).Rows
        direccionAEnviar = row(0).ToString
        mail.To.Add(direccionAEnviar)
    Next
    Dim servidor As New SmtpClient("smtp.live.com")
    servidor.Port = 587
    servidor.EnableSsl = True
    servidor.Credentials = New System.Net.NetworkCredential("correoemisor o nombre de usuario", "password")
    servidor.Send(mail)
    ds = Nothing
Catch ex As Exception
    MsgBox(ex.Message)
End Try

Cuando se usa el DataAdapter no es necesario abrir y cerrar la conexion, de ser asi tendrías que escribir con.open() en tu código para que no te genere error.

Espero haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de juan carlos
Val: 34
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por juan carlos (18 intervenciones) el 27/04/2018 03:12:37
Voy a probar, no sabes cual es la codificacion para desactivar o activar CCO (con copia oculta)?
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
Imágen de perfil de kingk
Val: 9
Ha aumentado su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por kingk (76 intervenciones) el 27/04/2018 04:21:42
Para ello escribe dentro del for lo siguiente:
mail.Bcc.Add(direccionAEnviar)
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
Imágen de perfil de juan carlos
Val: 34
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por juan carlos (18 intervenciones) el 28/04/2018 00:43:34
si ocurriendo lo mismo amigo, se siguen mostrando las otras direcciones de los demas destinatarios en los correos de los otros destinatarios, de verdad agradezco mucho tu ayuda si puedes ayudarme a solucionar esto.
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
Imágen de perfil de juan carlos
Val: 34
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por juan carlos (18 intervenciones) el 28/04/2018 00:40:43
Me funciona de maravilla, ya no se envian los correos repetidos, es un codigo muy limpio de verdad, muchas gracias por tu ayuda, ahora el otro detalle que me falta para pulir este gran codigo es poder enviar los correos con copia oculta (CCO), puesto que no deseo que los otros destinatarios se enteren quien recibe mis correos, con eso es mas que suficiente. de verdad muchas gracias.
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
Imágen de perfil de Diego
Val: 681
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por Diego (190 intervenciones) el 27/04/2018 16:22:44
Hola, lo mas grave que vi en tu codigo.es esto...
1
2
3
MiDataSet = Nothing
   conn.Close()
 Next

En el primer recorrido.del bucle vacias el dataset y cerras la coneccion.

Las 2 lineas anteriores al next de tu for, deberian estar despues del next, fuera del ciclo.
Corrige eso, y despues vemos.
Saludos y +bytes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de juan carlos
Val: 34
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por juan carlos (18 intervenciones) el 28/04/2018 00:41:09
Ya lo corregi, muchas gracias por tu ayuda.
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
Imágen de perfil de kingk
Val: 9
Ha aumentado su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por kingk (76 intervenciones) el 28/04/2018 18:58:09
Hola, nuevamente te respondo. Para lograr lo que quieres debes usar la propiedad Bcc, tal y como te indique anteriormente, pero ya no debes usar la propiedad to. Por ejemplo el for tendría que ser así:
For Each row In ds.Tables(0).Rows
direccionAEnviar = row(0).ToString
mail.Bcc.Add(direccionAEnviar)
Next
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
Imágen de perfil de juan carlos
Val: 34
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por juan carlos (18 intervenciones) el 28/04/2018 21:57:56
Hola, muchas gracias por tu ayuda, he limpiado mi codigo y he agregado las lineas tal cual me has explicado pero sin ningun efecto, la verdad no se que otra cosa hacer, el codigo hace todo lo que necesito, solo ese ultimo detalle es lo que me falta (detalles de estetica lo llamaria yo), de resto todo marcha ala perfeccion.
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
Imágen de perfil de Diego
Val: 681
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por Diego (190 intervenciones) el 30/04/2018 13:55:50
Hola Juan Carlos, te paso una posible solución, en la linea 29 de tu mensaje original tenés esta linea:

1
mail.To.Add(direccionaenviar)

Reemplazala por la siguiente, del modo que la escribo yo con los corchetes [ ]

1
mail.[Bcc].Add(direccionaenviar)


Espero haber podido ayudar, saludos y +Bytes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de juan carlos
Val: 34
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problema con envios de correos repetidos

Publicado por juan carlos (18 intervenciones) el 30/04/2018 22:35:53
Perfecto, justo lo que estaba buscando, a ti y a todos los que han aportado su conocimiento a este pequeño codigo muchas gracias por la ayuda.

Seguimos codificando y preguntando, espero poder seguir contando con ustedes
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