Inconvenientes al enviar mails desde una aplicación en visual.net
Publicado por María Inés Burgos (49 intervenciones) el 18/07/2018 23:29:41
Buenos días! Primero que nada agradezco mucho a toda la gente que participa del foro, he avanzado un montón gracias a todos los aportes (leyéndolos y en preguntas que he hecho) ya que yo no sabía nada de nada.
Me encuentro trabada una vez más y recurro a su ayuda porque se me han quemado los papeles.
Es un poco embrollado lo que quiero hacer así que espero poder explicar (se aceptan mejores ideas o sugerencias desde luego)
Estoy añadiendo a mi programa una función que envíe mails de saludo de cumpleaños a la gente que tengo almacenada en la base de datos.
En un datagridview, a través de una consulta SQL, recupero el campo donde guardo el nombre de la persona y el email de los cumpleañeros. Bien, como quiero personalizar el saludo, quise usar una imagen de fondo cual tarjeta y escribir sobre ella el nombre de la persona, entonces leí que lo aconsejable era hacerlo con código HTML en el cuerpo del mensaje y que si quería escribir sobre la imagen, creara una tabla. Hasta ahí voy bien.
Con un foreach recorro el datagridview y mando los mails, cada uno con su asunto personalizado y lo que escribo sobre la imagen, cambia acorde al nombre de la persona.
El problema lo tengo con la imagen que pego, que se me sigue agregando cada vez que mando un mail, o sea en el 2do mail van 2 attachments, en el 3er mail van 3 y así. No sé cómo "limpiar" eso para que no suceda.
El otro conflicto que tengo que resolver es cómo hago para que la tabla, con la imagen de fondo y su contenido se reduzca proporcionalmente si uno por ejemplo ve el mail desde un celular o pantalla más chica. Sé que se puede hacer pero estoy poco más que perdida.
Paso a dejarles el código que empleo para que me digan dónde puedo o cómo puedo poner un "clear" o algo así como para que se me limpien los attachments, esto de enviar la imagen lo hago con un LinkedResource. Intenté usar un clear en el LinkedResource pero me lo manda igual, nomás que sin nombre. Por más que limpio las cajas de texto que uso para escribir el mensaje, queda la imagen ya "cargada". Este módulo lo uso en el botón "enviar" de un formulario donde le paso las variables. Otra cosa que me gustaría saber si es que se puede en lugar de usar el "send" mandar a borradores los mails, explico por qué. Si yo abro el viernes la aplicación, generé una función que me muestra los cumpleaños del viernes y también los del sábado y domingo, dado que esos días yo probablemente no use la aplicación entonces quería seleccionar los correos que quiero enviar ese día y los otros mandarlos a borrador para enviarlos luego, ya que el programa estará en una pc que no voy a tener disponible el fin de semana, de esta manera desde mi celular puedo enviar los mails.
La última parte de mi pregunta, de adaptar el tamaño a una pantalla más pequeña estoy segura que no corresponde a este foro, pero como está todo vinculado lo pondré aquí igual, si no corresponde desde ya pido disculpas. Agradecería al menos me digan un término de búsqueda como para poder leer al respecto ya que de HTML no sé nada. Este es el texto que pongo en un textbox (o sea es el "mensaje" de la función anteriormente pegada) para enviar la tabla con la foto de fondo y el texto escrito en una variable "Nombre" que completo a través de una función en visual (el cid:IMG1 es la imagen de arriba también)
<table width="703" border="0" cellpadding="0" cellspacing="0" background="cid:IMG1">
<tr>
<td height="1000"; style="text-align: center; vertical-align: middle; font-size: 55px; color:#FF33FC"><p font face="Berlin Sans FB Demi"><br/><br/><b><i>Nombre</i></b></p></td><br /><br/></tr></table>
Desde ya muchas gracias a todos!
Saludos, María Inés
Me encuentro trabada una vez más y recurro a su ayuda porque se me han quemado los papeles.
Es un poco embrollado lo que quiero hacer así que espero poder explicar (se aceptan mejores ideas o sugerencias desde luego)
Estoy añadiendo a mi programa una función que envíe mails de saludo de cumpleaños a la gente que tengo almacenada en la base de datos.
En un datagridview, a través de una consulta SQL, recupero el campo donde guardo el nombre de la persona y el email de los cumpleañeros. Bien, como quiero personalizar el saludo, quise usar una imagen de fondo cual tarjeta y escribir sobre ella el nombre de la persona, entonces leí que lo aconsejable era hacerlo con código HTML en el cuerpo del mensaje y que si quería escribir sobre la imagen, creara una tabla. Hasta ahí voy bien.
Con un foreach recorro el datagridview y mando los mails, cada uno con su asunto personalizado y lo que escribo sobre la imagen, cambia acorde al nombre de la persona.
El problema lo tengo con la imagen que pego, que se me sigue agregando cada vez que mando un mail, o sea en el 2do mail van 2 attachments, en el 3er mail van 3 y así. No sé cómo "limpiar" eso para que no suceda.
El otro conflicto que tengo que resolver es cómo hago para que la tabla, con la imagen de fondo y su contenido se reduzca proporcionalmente si uno por ejemplo ve el mail desde un celular o pantalla más chica. Sé que se puede hacer pero estoy poco más que perdida.
Paso a dejarles el código que empleo para que me digan dónde puedo o cómo puedo poner un "clear" o algo así como para que se me limpien los attachments, esto de enviar la imagen lo hago con un LinkedResource. Intenté usar un clear en el LinkedResource pero me lo manda igual, nomás que sin nombre. Por más que limpio las cajas de texto que uso para escribir el mensaje, queda la imagen ya "cargada". Este módulo lo uso en el botón "enviar" de un formulario donde le paso las variables. Otra cosa que me gustaría saber si es que se puede en lugar de usar el "send" mandar a borradores los mails, explico por qué. Si yo abro el viernes la aplicación, generé una función que me muestra los cumpleaños del viernes y también los del sábado y domingo, dado que esos días yo probablemente no use la aplicación entonces quería seleccionar los correos que quiero enviar ese día y los otros mandarlos a borrador para enviarlos luego, ya que el programa estará en una pc que no voy a tener disponible el fin de semana, de esta manera desde mi celular puedo enviar los mails.
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
Imports System.Net
Imports System.Net.Mail
Module Correo
Private correos As New MailMessage
Private envios As New SmtpClient
Sub enviarCorreo(ByVal emisor As String, ByVal password As String, ByVal mensaje As String, ByVal asunto As String, ByVal destinatario As String)
Dim MIHTML As String = Frm_Mail.RTB_Mensaje.Text 'TEXTO HTML QUE SE ENVIARA
Dim VISTAHTML As AlternateView = AlternateView.CreateAlternateViewFromString(MIHTML, Nothing, System.Net.Mime.MediaTypeNames.Text.Html)
Try
Dim IMAGEN1 As LinkedResource = New LinkedResource("C:\Users\Downloads\tarjeta.png", System.Net.Mime.MediaTypeNames.Image.Jpeg)
IMAGEN1.ContentId = "IMG1"
VISTAHTML.LinkedResources.Add(IMAGEN1)
correos.AlternateViews.Add(VISTAHTML)
correos.To.Clear()
correos.Body = ""
correos.Subject = ""
correos.Body = mensaje
correos.Subject = asunto
correos.IsBodyHtml = True
correos.To.Add(Trim(destinatario))
correos.From = New MailAddress(emisor)
envios.Credentials = New System.Net.NetworkCredential(emisor, password)
envios.Host = "smtp.live.com"
envios.Port = 587
envios.EnableSsl = True
envios.Send(correos)
MsgBox("El mensaje fue enviado correctamente. ", MsgBoxStyle.Information, "Mensaje")
Catch ex As Exception
MessageBox.Show(ex.Message, "Mensajeria 1.0 vb.net ®", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
End Module
La última parte de mi pregunta, de adaptar el tamaño a una pantalla más pequeña estoy segura que no corresponde a este foro, pero como está todo vinculado lo pondré aquí igual, si no corresponde desde ya pido disculpas. Agradecería al menos me digan un término de búsqueda como para poder leer al respecto ya que de HTML no sé nada. Este es el texto que pongo en un textbox (o sea es el "mensaje" de la función anteriormente pegada) para enviar la tabla con la foto de fondo y el texto escrito en una variable "Nombre" que completo a través de una función en visual (el cid:IMG1 es la imagen de arriba también)
<table width="703" border="0" cellpadding="0" cellspacing="0" background="cid:IMG1">
<tr>
<td height="1000"; style="text-align: center; vertical-align: middle; font-size: 55px; color:#FF33FC"><p font face="Berlin Sans FB Demi"><br/><br/><b><i>Nombre</i></b></p></td><br /><br/></tr></table>
Desde ya muchas gracias a todos!
Saludos, María Inés
Valora esta pregunta


0