|
Página 1 de 3
|
Enviar Mail Con Adjunto/s Desde Gambas3
Autor |
Mensaje |
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Enviar Mail Con Adjunto/s Desde Gambas3
Al final he tenido que volver al tema del E-Mail, que en el curro quieren enviar archivos por correo desde la aplicación. Una pequeña investigación y he terminado haciendo la siguiente función.
Public Sub enviarmail(aTo As String[], cAsunto As String, cTexto As String, cFrom As String, Optional adjuntos As String[] = [], Optional bcc As String[] = [])
Dim enviador As New SmtpClient
Dim fich, mime, fname As String
Dim n As Integer
Dim s as String
enviador.debug = True
enviador.host = mcomun.mailserver["host"]
enviador.user = mcomun.mailserver["user"]
enviador.password = mcomun.mailserver["password"]
enviador.Alternative = False 'con esto le indicas que el texto puede ir en varios formatos para que el cliente de correo eliga. ¡No activar si hay adjuntos!.
enviador.From = cFrom
For Each s In aTo
enviador.To.Add(s)
Next
For Each s In bcc
enviador.bcc.Add(s)
Next
enviador.Subject = cAsunto
enviador.Body = cTexto
For Each fich In adjuntos
Exec ["file", "-bi", fich] To mime
mime = Left(mime, InStr(mime, ";") - 1)
fname = Right(fich, - RInStr(fich, "/"))
enviador.Add(File.Load(fich), mime, fname)
Next
enviador.send
End
Corta, simple y funcional. Veréis que me apoyo en el comando file para extraer el mime-type de cada adjunto y veréis que he omitido, por seguridad anti-spammers, el CC, sólo admito BCC, que ya hemos tenido lío con eso en la empresa.
Espero que os sea útil.
Saludos
última edición por shordi el Sabado, 31 May 2014, 09:30; editado 5 veces
|
#1 Martes, 20 May 2014, 08:27 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Enviar Mail Con Adjunto/s Desde Gambas3
Shordi:
Muy útil tu código, gracias por compartir
Saludos
|
#2 Martes, 20 May 2014, 20:34 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Enviar Mail Con Adjunto/s Desde Gambas3
Lo he modificado, que no sé por qué (supongo que lo han actualizado) en la línea:
enviador.to = ato
' y en
enviador.bcc = bcc
falla y dice que to y bcc son de sólo lectura. Lo miro en las ayudas y efectivamente es así pero hace unos días funcionaba sin problemas .
En fin...
|
#3 Miercoles, 28 May 2014, 19:04 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Enviar Mail Con Adjunto/s Desde Gambas3
Tiene pinta de un nuevo bug, habria que comentarlo en las listas a Benoit.
|
#4 Miercoles, 28 May 2014, 19:13 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Enviar Mail Con Adjunto/s Desde Gambas3
Si es un bug es que ya lo han corregido, digo. Ahora se comporta tal como dice la documentación. Mejor dejarlo así.
Saludos.
|
#5 Miercoles, 28 May 2014, 19:48 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Enviar Mail Con Adjunto/s Desde Gambas3
Eectivamente, algo tiene raro. Al añadir los destinatarios antes tenía el código:
Que el otro día funcionaba sin problemas. Hoy, al probarlo, abortaba en la línea que llama a la función, sin ni siquiera entrar en ella, con el mensaje "No return Value".
He cambiado el código por:
Y ahora sí funciona sin problemas (de momento).
Tal vez sea un bug o tal vez sea cosa de punteros y demás que, supongo, no es lo mismo una variable String que un elemento dentro de una tabla pasado por referencia desde otra función...
|
#6 Sabado, 31 May 2014, 09:34 |
|
|
estrella_de_galicia
Programador
Registrado: Enero 2010
Mensajes: 110
Edad: 41 Ubicación: Terrassa
|
Re: Enviar Mail Con Adjunto/s Desde Gambas3
como pequeño aporte
estrella_de_galicia escribió: Como enviar mails desde la consola, empleando servidor externo SMTP.
Algo muy útil para nuestros scripts, es el envío de e-mails a nuestra cuenta de correo.
En azul, parámetros a modificar.
# true | mailx -n -a archivo -r remitente -s asunto -S smtp=servidor-de-correo-saliente -S smtp-auth-user=usuario -S smtp-auth-password=password email-destinatario
=================== Saludos / Best Regards
Pedro Aguilar
http://edrossuse.blogspot.com
Desarrollador de LNXGEST
|
#7 Viernes, 06 Junio 2014, 08:06 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Enviar Mail Con Adjunto/s Desde Gambas3
¡Trampa, trampa! ¡Usas programas externos, pecadorrrrrrr!
|
#8 Viernes, 06 Junio 2014, 08:21 |
|
|
FernandoT
Fernando
Usuario
Registrado: Diciembre 2015
Mensajes: 1
Edad: 59 Ubicación: Lanus
|
Re: Enviar Mail Con Adjunto/s Desde Gambas3
hola gente, soy nuevo en esto de programar orientado a objetos y tambien en Gambas3
estoy haciendo una aplicacion administrativa para mi local de computacion y una de las cosas que me estan complicando es el envio de email desde la aplicacion
soy consiente de ,mis limitaciones, solo necesitaria un ejemplo completo que funcione para poder aprender
he insertado y tratado de usar la funcion de este post ,pero me da errores de incongruencia de tipo de datos... voy a seguir buscando documentacion y data en internet, pero si alguno se apiada acepto cualquier ayuda
y muchas gracias por tomarce el tiempo de leer esto !
saludos
Fernando
|
#9 Martes, 05 Enero 2016, 17:42 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Enviar Mail Con Adjunto/s Desde Gambas3
Ese hilo es algo viejo. La función para enviar correo tal como la utilizo sin ningún problema ahora, es ésta:
Public Function sendmail(sFrom As String, aTo As String[], sSubject As String, sBody As String, cServer As Collection, Optional aBcc As String[], Optional aAttached As String[], Optional ldebug As Boolean) As Boolean
Dim SmtpC As New SmtpClient
Dim s, cad, fich, cmime, fname As String
SmtpC.debug = ldebug
SmtpC.host = cServer["host"]
SmtpC.user = cServer["user"]
SmtpC.password = cServer["password"]
SmtpC.Encrypt = IIf(cServer["Encrypt"], cServer["Encrypt"], Net.SSL)
SmtpC.Alternative = False
SmtpC.From = sFrom
For Each s In aTo
SmtpC.To.Add(Replace(s, " ", ""))
Next
SmtpC.Subject = sSubject
SmtpC.Body = sBody
If Not IsNull(aAttached) Then
For Each fich In aAttached
Exec ["file", "-bi", fich] To cmime
cmime = Left(cmime, InStr(cmime, ";") - 1)
fname = Right(fich, - RInStr(fich, "/"))
SmtpC.Add(File.Load(fich), cmime, fname)
Next
Endif
If Not IsNull(abcc) Then
For Each s In abcc
SmtpC.bcc.Add(s)
Next
Endif
SmtpC.send
Return True
Catch
print Error.text;;Error.where
Return False
End
Si algo no entiendes, pregunta, que para eso estamos.
=================== No podemos regresar
|
#10 Martes, 05 Enero 2016, 18:35 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 3
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|