Imports System.Xml
Imports MySql.Data.MySqlClient
Module Module1
Sub Main()
'Primero leemos el archivo config.xml
Dim lector As XmlTextReader = New XmlTextReader("config.xml")
Dim xml(5) As String
Dim i As Integer
i = 0
Do While (lector.Read())
Select Case lector.NodeType
Case XmlNodeType.Text
xml(i) = lector.Value
i = i + 1
End Select
Loop
'Ahora la conexion a nuestro servidor
Dim consulta As New MySqlCommand("select email from usuarios;")
Dim conexion As New MySqlConnection("server=" & xml(0) & ";database=" & xml(1) & ";uid=" & xml(2) & ";password=" & xml(3) & ";")
Try
conexion.Open()
Catch ex As Exception
Console.WriteLine("No se puede conectar a la base de datos")
End Try
consulta.Connection = conexion
'Procedemos a ejecutar el select
Dim adaptador As New MySqlDataAdapter
adaptador.SelectCommand = consulta
Dim datos As New DataTable
adaptador.Fill(datos)
Dim adaptador2 As New MySqlDataAdapter
adaptador2.SelectCommand = consulta
Dim datos2 As New DataTable
adaptador2.Fill(datos2)
Dim filas = datos2.Rows.Count()
Dim columnas = datos.Columns.Count()
For i = 0 To filas - 1
Dim row As DataRow = datos2.Rows(i)
For j = 0 To columnas - 1
'una vez tenemos el bucle que nos devuelve TODOS los resultados, ahora pondremos ese row(j) en el destinatario
'de los correos
Dim smtp As New System.Net.Mail.SmtpClient()
Dim mensaje As New System.Net.Mail.MailMessage()
'Configuramos el SMTP
smtp.Credentials = New System.Net.NetworkCredential(xml(4), xml(5))
smtp.Host = "smtp.gmail.com"
smtp.Port = "587"
smtp.EnableSsl = True
'Configuramos mensaje
mensaje.From =
New System.Net.Mail.MailAddress(
"[email protected]",
"prueba_nombre", System.Text.Encoding.UTF8)
'mensaje.To.Add(row(j))
mensaje.Subject = "asunto"
mensaje.SubjectEncoding = System.Text.Encoding.UTF8
mensaje.IsBodyHtml = True
'Preparamos otro select que recorra por cada correo este select y envíe el resultado
Dim conexionsql As New SqlClient.SqlConnection("server=localhost;database=bbdd;uid=root;password=pass;")
Dim consultahtml As New SqlClient.SqlCommand("SELECT TCLIENTES2 AS NOMBRE, TPEDIDOS1 as NºPEDIDO, TVALORESPEDIDOS3 AS DESC_ART_PED, TVALORESPEDIDOS7 AS CANT_ART_PED
FROM TPEDIDOS INNER JOIN TVALORESPEDIDOS ON TVALORESPEDIDOS.TVALORESPEDIDOS19=TPEDIDOS.TPEDIDOS1
INNER JOIN TCLIENTES ON TCLIENTES.TCLIENTES1 = TPEDIDOS.TPEDIDOS9 WHERE TPEDIDOS2='20160104 00:00:00.000' ORDER BY NOMBRE;")
Dim consultaCliente As New SqlClient.SqlCommand("")
consultahtml.Connection = conexionsql
Dim adaptadorhtml1 As New SqlClient.SqlDataAdapter
adaptadorhtml1.SelectCommand = consultahtml
Dim datoshtml1 As New DataTable
adaptadorhtml1.Fill(datoshtml1)
Dim adaptadorhtml2 As New SqlClient.SqlDataAdapter
adaptadorhtml2.SelectCommand = consultahtml
Dim datoshtml2 As New DataTable
adaptadorhtml2.Fill(datoshtml2)
Dim filashtml = datoshtml2.Rows.Count()
Dim columnashtml = datoshtml1.Columns.Count()
Console.WriteLine(filashtml)
Console.WriteLine(columnashtml)
My.Computer.FileSystem.WriteAllText("prueba.txt", "<table border='1'>", True)
'Aqui es donde anda el problema....
For k = 0 To filashtml - 1
Dim rowhtml As DataRow = datoshtml2.Rows(k)
For l = 0 To columnashtml - 1
Dim colhtml As DataColumn = datoshtml1.Columns(l)
If Not rowhtml(0) Is Nothing Then
My.Computer.FileSystem.WriteAllText("prueba.txt", "<tr><th>" & CStr(rowhtml(0)) & "</th>", True)
End If
If Not rowhtml(1) Is Nothing Then
My.Computer.FileSystem.WriteAllText("prueba.txt", "<th>" & CStr(rowhtml(1)) & "</th></tr>", True)
End If
'ahora el bucle para los articulos
If rowhtml(2) Then
My.Computer.FileSystem.WriteAllText("prueba.txt", "<tr><td>" & CStr(rowhtml(2)) & "</td>", True)
ElseIf rowhtml(3) Then
My.Computer.FileSystem.WriteAllText("prueba.txt", "<td>" & CStr(rowhtml(3)) & "</td></tr>", True)
End If
Select Case rowhtml(l)
Case rowhtml(0)
End Select
Next
Next
My.Computer.FileSystem.WriteAllText("prueba.txt", "</table>", True)
Dim lectorhtml As String
lectorhtml = My.Computer.FileSystem.ReadAllText("prueba.txt")
mensaje.Body =
"<html><body>" & lectorhtml & "</body></html>"
mensaje.BodyEncoding = System.Text.Encoding.UTF8
mensaje.Priority = System.Net.Mail.MailPriority.High
'Configuramos el envio
Try
smtp.Send(mensaje)
Catch ex As Exception
Console.WriteLine("No se ha podido enviar el mensaje")
End Try
My.Computer.FileSystem.DeleteFile("prueba.txt")
Next
Next
End Sub
End Module