Enviar correo CDO con STARTTLS

175 views
Skip to first unread message

Juan Miguel Solis

unread,
Jun 18, 2024, 11:27:56 AMJun 18
to Comunidad de Visual Foxpro en Español
Hoal a todos

Tengo un problema para enviar correos CDO desde una cuenta empresarial (parece que tiene que tener el STARTTLS), yo lo configuro asi y no me funciona:
comunicaciones 3.png

Y por dentro en teoria activo el STARTTLS :
error 2.png

Pero al final me sale este error:

error de comunicaciones 1.png

Alguien saber porque puede ser o que estoy haciendo mal ?

Un saludo

Zarlu

unread,
Jun 18, 2024, 2:51:01 PMJun 18
to Comunidad de Visual Foxpro en Español

Buenos días Juan Miguel!
Creo que una cuenta empresarial debe tener su propio smtp.
Quizá debas consultar con el proveedor del dominio/correo.
También puedes probar con otro puerto, aunque he notado que para los dominios propios funciona el 587.

Suerte
zarlu
Chetumal, Quintana Roo, México

Juan Miguel Solis

unread,
Jun 18, 2024, 5:08:28 PMJun 18
to Comunidad de Visual Foxpro en Español
Hola 

Probé con el smtp.officee365.com y con outlock.com puerto 587 y nada, alguien tiene algún ejemplo de como enviar un CDO  con una cuanta que necesite STARTTLS ?

Un saludo

Marco Antonio Sepulveda

unread,
Jun 18, 2024, 6:23:07 PMJun 18
to publice...@googlegroups.com
WITH loflds
    .ITEM("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .ITEM("http://schemas.microsoft.com/cdo/configuration/smtpserver") = ALLTRIM(lcservidor) && ejemplo: "smtp.sendgrid.net"
    .ITEM("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587 && Puerto para STARTTLS
    .ITEM("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    .ITEM("http://schemas.microsoft.com/cdo/configuration/sendusername") = "apikey"
    .ITEM("http://schemas.microsoft.com/cdo/configuration/sendpassword") = tcmailpass
    .ITEM("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 0 && STARTTLS no necesita smtpssl = 1
    .UPDATE()
ENDWITH

Creo que la propiedad sendtls no existe para CDO, en su lugar usa la propiedad  smtpusessl en 0 si quieres usar   STARTTLS
Yo personalmente uso SSL, tengo el envío de la siguiente manera y me funciona muy bien. Estoy usando un servicio de un tercero ( sendgrid), con el puerto 465. Espero te pueda servir de algo

lnattachtype = 4

lomsg = CREATEOBJECT("CDO.Message")
loconf = lomsg.configuration
loflds = loconf.FIELDS
WITH loflds
.ITEM("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.ITEM("http://schemas.microsoft.com/cdo/configuration/smtpserver") = ALLTRIM(lcservidor) &&sendgrid=>"smtp.sendgrid.net"
.ITEM("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = lcpuerto &&sendgrid=>587 sin ssl, 465 con ssl
.ITEM("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.ITEM("http://schemas.microsoft.com/cdo/configuration/sendusername") = "apikey"
.ITEM("http://schemas.microsoft.com/cdo/configuration/sendpassword") = tcmailpass
.ITEM("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1 &&No usa ssl = 0; Usa ssl = 1
.UPDATE()
ENDWITH

TRY
WITH lomsg
.TO = lcto
.cc = lccc
.bcc = lcbcc
.FROM = lcfrom
.subject = lcsubject
.htmlbody = lcbody
.addattachment(lcattachfilepath, lcattachname, lnattachtype)
.configuration = loconf
.SEND()
lccorreo_ok = "S"
ENDWITH
CATCH TO oexception
lccorreo_ok = "N"
ENDTRY

--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/899147e3-eb86-45c5-80ed-1a3a46f85ae0n%40googlegroups.com.

Juan Miguel Solis

unread,
Jun 19, 2024, 4:34:21 AMJun 19
to publice...@googlegroups.com
Hola Marco Antonio

Nada lo probe asi com me dijiste, incluso cambiando el puerto a 587 o 465 o 25 y el mensaje siempre es:

Error: 1429 .. 1 Error de transporte en la conexión al servidor

Y esto solo me pasa aqui,por cierto que es eso de SendGrid ?

Un saludo

Has recibido este mensaje porque estás suscrito a un tema del grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/publicesvfoxpro/s1aotBbVtH0/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/CAE5orSp1kain3fqdfSaJhYoWD43e%3D5ePopDNqb0f-ZcCsip4zw%40mail.gmail.com.

Juan Miguel Solis

unread,
Jun 19, 2024, 5:51:20 AMJun 19
to Comunidad de Visual Foxpro en Español
Bueno después de que no me funcionara nada, parece ser que el problema es que para enviar el correo necesito enviar una autorización OAUTH 2.0  para esto necesito tener un token para para usarlo con esa autorización, aqui ya me quede pillado, ya que desde VFP, no se como recoger un token, para poder usarlo y enviar el email...

En fin pensamientos míos, si alguien tiene algo parecido a esto, a ver si puede echarme una mano.

Marco eso del Sendgrid, como funciona , yo lo que quiero es mandar un correo, pero que cuando llegue el remitente sea por ejemplo, yo consigo mandar el correo pero usando una cuenta distinta aica.canontel.com y a un servidor de correo aica.canontel.com , le pongo un rplyto : alicia...@empresariosdealcobendas.com y eso funciona pero claro en el correo original dice que les llega desde 
foro 1.png

Aunque si dan a responder, le sale esto :

foto 2.png
O sea todo sale como quiero, pero el problema es que el cliente sigue viendo que quien se lo lo envio fue aica.canontel.com ( y eso no lo quiere el cliente), el cleinte quiere que diga que quien lo envio fue alicia.molina@empresa........com

Espero haberme explicado mejor.

Un saludo

Antonio Meza

unread,
Jun 19, 2024, 10:18:05 AM (14 days ago) Jun 19
to Comunidad de Visual Foxpro en Español
Hola!!

El problema es que CDO no tiene soporte al protocolo TLS que requiere el puerto 587, por lo tanto nunca vas a poder enviar correos por medio de CDO por el puerto 587.

Prueba CsFoxySmtp que es la que uso para enviar correos de GMAIL y Microsoft.


saludos

Juan Miguel Solis

unread,
Jun 19, 2024, 11:43:48 AM (14 days ago) Jun 19
to publice...@googlegroups.com
Ok, gracias me imagino que el enlace es para bajármelo 😀😀

 Es complicado usarlo?

Un saludo 

--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito a un tema del grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/publicesvfoxpro/s1aotBbVtH0/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

Marco Antonio Sepulveda

unread,
Jun 19, 2024, 1:17:26 PM (14 days ago) Jun 19
to publice...@googlegroups.com
LOCAL lcto, lccc, lcbcc, lcfrom, lcsubject, lcbody, lcattachfilepath, lcattachname, lnattachtype, lccorreo_ok, lcpass
LOCAL lomsg, loconf, loflds

lcto = "destin...@example.com"
lccc = ""
lcbcc = ""
lcfrom = "tu_dir...@hotmail.com"
lcpass = "tu_contraseña_de_aplicacion" &&Para esto debes habilitar contraseña de aplicación (https://support.microsoft.com/es-es/account-billing/c%C3%B3mo-obtener-y-usar-contrase%C3%B1as-de-aplicaci%C3%B3n-5896ed9b-4263-e681-128a-a6f2979a7944)
lcsubject = "Asunto del correo"
lcbody = "Cuerpo del correo"
lcattachfilepath = ""  && Ruta al archivo adjunto, si lo hay
lcattachname = JUSTFNAME(lcattachfilepath)

lnattachtype = 4

lomsg = CREATEOBJECT("CDO.Message")
loconf = lomsg.configuration
loflds = loconf.FIELDS

WITH loflds
.ITEM("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

.UPDATE()
ENDWITH

TRY
WITH lomsg
.TO = lcto
.cc = lccc
.bcc = lcbcc
.FROM = lcfrom
.subject = lcsubject
.htmlbody = lcbody
IF !EMPTY(lcattachfilepath)
.addattachment(lcattachfilepath, lcattachname, lnattachtype)
ENDIF

.configuration = loconf
.SEND()
lccorreo_ok = "S"
ENDWITH
CATCH TO oexception
lccorreo_ok = "N"
MESSAGEBOX("Error al enviar el correo: " + oexception.Message, 16, "Error")
ENDTRY

Prueba este código, yo lo probé y me funciona perfectamente enviando correos desde mi cuenta de hotmail
Para lograr esto también debes habilitar la contraseña de aplicación, en el comentario esta el link, si no te abre buscas cómo habilitar contraseña de aplicación.
La contraseña que pongas en lcpass debe ser la contraseña de aplicación, no te funciona si pones la contraseña que usas para iniciar sesión

Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/CA%2BBv44UcVtdnVHkeSGTgFLekW6mfa2S9vpka%3Dwtx5%2BerpNyM3g%40mail.gmail.com.

Juan Miguel Solis

unread,
Jun 20, 2024, 6:04:23 AM (13 days ago) Jun 20
to publice...@googlegroups.com
Hola Antonio

Estoy siguiendo lo que me dijiste a ver si puedo mandar el email de una vez, que esto me tiene algo agobiado la verda, muchas gracias por tu contestacion, ahora estoy en eso :) .)

Por cierto yo antes con el CDO, creaba una HTML anteriormente  y con .CreateMHTMLBody("file://C:\TEMP\CUOTAS.HTM")  para mandarle como Body, aquí como se hace ?

La dll CsFoxySmtp.dll, pude registrarla bien en mi máquina normal, pero cuando quiero hacer lo mismo en mi maquina virtual que también es de 64 bit y donde tengo en entorno de programación, me da este error (secuencia)

FMR1.PNG
Como ves esta en el sitio correcto.

fmr2.PNG
Ejecuto la instrucción RegAsm.exe 

Pero el resultado ha sido erroneo.
Fmr3.PNG
Hice lo mismo en la máquina normal y ahi si lo hizo bien, que puede pasar ?

Un saludo


El El mié, 19 jun 2024 a las 16:18, Antonio Meza <solv...@gmail.com> escribió:
--

Antonio Meza

unread,
Jun 20, 2024, 10:31:58 AM (13 days ago) Jun 20
to Comunidad de Visual Foxpro en Español
Hola, debes descargar la versión de 32 bit de CsFoxySmtp ya que VFP 9 solo corre a 32bit, es decir no tiene que ver con tu sistema operativo, mas bien con la versión que soporta VFP 9 y que es 32bit.

Como te comente en el correo privado debes ingresar a la carpeta donde esta la DLL de CsFoxySmtp y desde ahí llamar a Resgam con la ruta completa.

Para incrustar imágenes hay un ejemplo, pero tienes que indicar la ruta donde estan físicamente las imágenes para que se puedan enviar al correo, la librería CDO lo hacia en automático pero aquí las tienes que indicar de forma manual.

saludos
Reply all
Reply to author
Forward
0 new messages