Comunidad Gambas-es

Versión completa: SMTP.GMAIL.COM (SOLUCIONADO)
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola, desde hace mucho, mucho tiempo uso el código que se publicó, en el foro para enviar mails a traves de gmail como smtp externo y funcionaba a las mil maravillas.

Se ha actualizado la política de google así:

Aplicaciones menos seguras y la cuenta de GooglePara proteger tu cuenta, a partir del 30 de mayo del 2022, ​​Google dejará de admitir aplicaciones y dispositivos de terceros que te pidan que inicies sesión en tu cuenta de Google usando solo tu nombre de usuario y contraseña.
Importante: Este plazo no se aplica a los clientes de Google Workspace o de Google Cloud Identity. La fecha en que el cambio se implementará para estos clientes se anunciará en el blog de Workspace más adelante.
Para obtener más información, sigue leyendo.

Y desde ese momento no funciona mi rutina para enviar pedidos que iba tan bien. He cambiado servidor, puerto, Encrypt, etc y no lo consigo.
Como veréis arrastro el problema desde mayo, no es que no lo haya probado. Incluso lo he intentado con un servicio propio de mi dominio y no consigo que se envie nada.  Me da error de Conexion failed y otro de EHLO.
¿Que hay que cambiar para seguir usándolo? o es gb.net.smtp que ha dejado de funcionar (cosa que dudo)
Me da igual usar una cuenta de mi dominio si con gmail ya no se puede hacer... pero como lo arreglo o configuro?

Gracias

El código es:
GAMBAS
  1. Public Sub enviarmail(aTo As String[], cAsunto As String, cTexto As String, Optional cFrom As String, Optional bcc As String[], Optional adjuntos As Variant[])
  2.  
  3.     Dim hfile As File
  4.     Dim archivo As String
  5.     Dim destinatarios As String
  6.     Dim textoplano As String
  7.     Dim destino As String
  8.     Dim enviador As New SmtpClient
  9.     Dim campos As New String[]
  10.  
  11.     Application.busy = 1
  12.     enviador.host = usu.mihost '"miservidor de correo"
  13.     enviador.user = usu.miusuariodecorreo ' "miusuariodecorreo"
  14.     enviador.password = usu.miclavedeusuariodecorreo ' "miclavedeusuariodecorreo"
  15.  
  16.     enviador.Encrypt = Net.SSL
  17.     If Not cFrom Then cFrom = usu.micuentacorreo ' "micuenta@remitentedecorreo"
  18.     enviador.Alternative = True
  19.     enviador.Port = 465
  20.     enviador.From = cFrom
  21.     For Each destino In aTo
  22.         enviador.to.Add(destino)
  23.     Next
  24.     enviador.Subject = cAsunto
  25.     ' enviador.Add(cTexto, "text/plain")
  26.     enviador.Add(cTexto, "text/html")
  27.     Try enviador.send
  28.     If Error Then
  29.         Application.busy = 0
  30.         Message.Error("No se ha podido enviar el mensaje\n" & Error.Text)
  31.         Return
  32.     Endif
  33.     Application.busy = 0
  34.     Message.Info("Mensaje enviado")
  35.     ' Como no ha habido error, guardamos los datos de enviado
  36.     ' para saber que se ha enviado correctamente... (persistencia)
  37.     archivo = Settings["DATOS/basedatos"] &/ "correo/enviados.csv"
  38.     If Not Exist(archivo) Then
  39.         ' Aqui puede fallar sin hay mas de 1 nivel de
  40.         ' directorio sin crear por encima de archivo.
  41.         If Not Exist(File.Dir(archivo)) Then
  42.  
  43.             Print "Como no existe creamos " & File.Dir(archivo)
  44.             Try Mkdir File.Dir(archivo)
  45.             If Error Then Print Error.Text
  46.  
  47.         Endif
  48.  
  49.         campos.Add("fecha")
  50.         campos.Add("destinatiarios")
  51.         campos.Add("asunto")
  52.         campos.Add("desde")
  53.         campos.Add("mensaje")
  54.         CSVwriter.create(archivo, campos)
  55.     Else
  56.         CSVwriter.Open(archivo)
  57.     Endif
  58.  
  59.     destinatarios = aTo.Join("|")
  60.     ' Cambio los ; del texto por } y las newline por |
  61.     ' Al leer habrá que reconstruir
  62.     'textoplano = Replace(cTexto, ";", "}")
  63.     'textoplano = Replace(textoplano, gb.NewLine, "|")
  64.     textoplano = Replace(Replace(ctexto, ";", "}"), gb.newline, "|")
  65.     campos.Clear
  66.     campos.Add(Format(Date(), "dd/mm/yyyy"))
  67.     campos.Add(destinatarios)
  68.     campos.Add(cAsunto)
  69.     campos.Add(usu.miusuariodecorreo)
  70.     campos.Add(textoplano)
  71.     CSVwriter.Write(campos)
  72.     CSVwriter.Close()
  73.  


Me temo que ya nos podemos olvidar de smtp para Google.

Como bien dices, las políticas de Google han cambiado y ahora ya sólo es posible enviar correos mediante autenticación Oauth2, que no es precisamente algo trivial en su implementación.

Busca por ese término y verás de lo que hablo. No estaría mal crear un componente o librería para implementar Oauth2 a nivel general para cualquier otro servicio, ya que desde hace bastante tiempo es la tendencia.

Saludos
SOLUCIONADO
Después de tanto tiempo he encontrado la solución que se aplica para PHPmailer y por supuesto para Gambas.

Se puede ver en youtube-video-smtp.mail.com

Gracias de todos modos. Tenía que pedir ayuda al foro para que apareciese la solución. Smile

Espero le sirva a quien la haya dejado de funcionar. Es configuración de cuenta google
Muy buena solución, te felicito por encontrarla y compartirla y al autor del vídeo también.

Saludos

P.D. Lo he probado con una cámara térmica IP que envía correos cuando detecta alta temperatura en las personas y funciona igual que antes. Perfecto!!
(07-07-2022, 12:26)ahtonio escribió: [ -> ]SOLUCIONADO
Después de tanto tiempo he encontrado la solución que se aplica para PHPmailer y por supuesto para Gambas.

Se puede ver en youtube-video-smtp.mail.com

Gracias de todos modos. Tenía que pedir ayuda al foro para que apareciese la solución. Smile

Espero le sirva a quien la haya dejado de funcionar. Es configuración de cuenta google

Saludos ahtonio.

¡ EXCELENTE APORTE !.

Hace unos días ya le había dicho a un micro empresario que se habían acabado los servicios de correos gratis de Gmail en su WebApp (sospechamos por estas crisis que nos friegan cada vez peor...), no le quedo otra que iniciar los tramites para que alquilaran temporalmente un correo con una empresa amiga, pero con esta solución hoy a tiempo se detuvo el gasto adicional Cool

Gracias.