Page 1 of 2

¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Sun Jan 24, 2021 5:00 pm
by JoseAlvarez
Hola a todos. Feliz Tarde de Domingo-

¿Puede alguien darme una mano para enviar emails desatendido con FW17.01+xHarbour?

Lo que necesito es que el sistema envie un correo con datos predeterminados y en tiempo de ejecucion, y que sea transparente para el usuario, o sea en segundo plano.

Alguna funcion y codigo de ejemplo?

Agradecido de antemano con todos.

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Sun Jan 24, 2021 6:08 pm
by VictorCasajuana
Para enviarlos en segundo plano, creo que la solución es utilizar threads.
Hay un ejemplo en \samples\threads.prg

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Sun Jan 24, 2021 6:57 pm
by JoseAlvarez
Hola Victor.
Gracias por tu ayuda.

Ya revise lo que me indicaste pero no veo nada parecido a envios de email.
A menos que yo no entienda de que se trata ese .PRG

Igual sigo buscando...

Muchas Gracias por la colaboracion. Si tienes alguna otra sugerencia, quedo al pendiente.

Saludos.

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Sun Jan 24, 2021 7:44 pm
by VictorCasajuana
Disculpa, me he explicado a medias.

Threads te servirá para ejecutar el envío de los emails en segundo plano sin que se te pare la ejecución del programa hasta que el email se haya enviado.

Otro tema es el envío de emails, para eso puedes mirar el ejemplo testpop3.prg

Espero que con esto te sirva.

Un saludo.

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Sun Jan 24, 2021 11:06 pm
by karinha
VictorCasajuana wrote:Disculpa, me he explicado a medias.

Threads te servirá para ejecutar el envío de los emails en segundo plano sin que se te pare la ejecución del programa hasta que el email se haya enviado.

Otro tema es el envío de emails, para eso puedes mirar el ejemplo testpop3.prg

Espero que con esto te sirva.

Un saludo.
NO.

Saludos.

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Sun Jan 24, 2021 11:37 pm
by JoseAlvarez
VictorCasajuana wrote:Disculpa, me he explicado a medias.

Threads te servirá para ejecutar el envío de los emails en segundo plano sin que se te pare la ejecución del programa hasta que el email se haya enviado.

Otro tema es el envío de emails, para eso puedes mirar el ejemplo testpop3.prg

Espero que con esto te sirva.

Un saludo.
OOOOkkkkk... gracias por la aclaratoria.. eso tambien es importante, que no se detenga la ejecucion del programa. ya estaba pensando colocar un meter, con eso que dices no hace falta

Mil gracias de nuevo victor !!

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Sun Jan 24, 2021 11:39 pm
by JoseAlvarez
karinha wrote:
VictorCasajuana wrote:Disculpa, me he explicado a medias.

Threads te servirá para ejecutar el envío de los emails en segundo plano sin que se te pare la ejecución del programa hasta que el email se haya enviado.

Otro tema es el envío de emails, para eso puedes mirar el ejemplo testpop3.prg

Espero que con esto te sirva.

Un saludo.
NO.

Saludos.
¿¿ NO ??

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Mon Jan 25, 2021 7:59 am
by VictorCasajuana
JoseAlvarez wrote:
VictorCasajuana wrote:Disculpa, me he explicado a medias.

Threads te servirá para ejecutar el envío de los emails en segundo plano sin que se te pare la ejecución del programa hasta que el email se haya enviado.

Otro tema es el envío de emails, para eso puedes mirar el ejemplo testpop3.prg

Espero que con esto te sirva.

Un saludo.
OOOOkkkkk... gracias por la aclaratoria.. eso tambien es importante, que no se detenga la ejecucion del programa. ya estaba pensando colocar un meter, con eso que dices no hace falta

Mil gracias de nuevo victor !!
de nada Jose, un apunte al respecto, utilizar Threads da mucha posibilidades pero has de tener cuidado con algunas cosas, piensa que son varios procesos paralelos que ejecuta tu aplicación. dichos procesos utilizarán las mismas variables públicas y si utilizas CLASSDATA también. Controla bien esto o te puede llevar un quebradero de cabeza al principio. También tienes forma de "matar" los procesos y comunicarte entre ellos.
En este enlace puedes ver más infor de como funcionan los threads, a mi me sirvió de mucho: http://www.kresin.ru/en/hrbfaq_3.html#Doc11

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Mon Jan 25, 2021 8:00 am
by VictorCasajuana
karinha wrote:
VictorCasajuana wrote:Disculpa, me he explicado a medias.

Threads te servirá para ejecutar el envío de los emails en segundo plano sin que se te pare la ejecución del programa hasta que el email se haya enviado.

Otro tema es el envío de emails, para eso puedes mirar el ejemplo testpop3.prg

Espero que con esto te sirva.

Un saludo.
NO.

Saludos.
Disculpa, no entiendo bien tu respuesta...

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Mon Jan 25, 2021 12:04 pm
by JoseAlvarez
VictorCasajuana wrote:
karinha wrote:
VictorCasajuana wrote:Disculpa, me he explicado a medias.

Threads te servirá para ejecutar el envío de los emails en segundo plano sin que se te pare la ejecución del programa hasta que el email se haya enviado.

Otro tema es el envío de emails, para eso puedes mirar el ejemplo testpop3.prg

Espero que con esto te sirva.

Un saludo.
NO.

Saludos.
Disculpa, no entiendo bien tu respuesta...
Victor ya estoy ptobando lo que me sugeriste. la respuesta que ves NO es del amigo joao. yo tampoco la entendi.

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Mon Jan 25, 2021 3:05 pm
by Rick Lipkin
Jose

If your client desktops are using MS OUtlook .. this code works well ...

Code: Select all

Try
   oOutLook  := TOleAuto():New("Outlook.Application")
Catch
    Saying := "For some Odd reason The Outlook e-mail CLient failed to Initialize"
    Msginfo( Saying )
    Return(.f.)
End Try

oMailItem := oOutLook:Invoke("CreateItem", 0)

oMailitem:to := cTo
*oMailItem:Recipients:Add( cOther )
oMailitem:CC := cCC
oMailItem:Subject := cSubject
oMailItem:Body := cBody

Try
   oMailItem:Attachments:Add("c:\dbtmp\"+cEmailName+".pdf" )
Catch
End Try

oMailItem:display(.F.)        // sends without any intervention
oMailItem:Invoke("Send")
sysrefresh()


msginfo( "E-mail Sent" )

Rick Lipkin

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Mon Jan 25, 2021 6:05 pm
by Armando
Rick:

Thanks for your code.

I have a couple of questions for you.

First question, how can I know that the mailing failed?

Second question, your code works well, when sending the
mail shows me Outlook screen for a few seconds, is there a way to avoid it?

Best regards

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Mon Jan 25, 2021 9:22 pm
by JoseAlvarez
Rick Lipkin wrote:Jose

If your client desktops are using MS OUtlook .. this code works well ...

Code: Select all

Try
   oOutLook  := TOleAuto():New("Outlook.Application")
Catch
    Saying := "For some Odd reason The Outlook e-mail CLient failed to Initialize"
    Msginfo( Saying )
    Return(.f.)
End Try

oMailItem := oOutLook:Invoke("CreateItem", 0)

oMailitem:to := cTo
*oMailItem:Recipients:Add( cOther )
oMailitem:CC := cCC
oMailItem:Subject := cSubject
oMailItem:Body := cBody

Try
   oMailItem:Attachments:Add("c:\dbtmp\"+cEmailName+".pdf" )
Catch
End Try

oMailItem:display(.F.)        // sends without any intervention
oMailItem:Invoke("Send")
sysrefresh()


msginfo( "E-mail Sent" )

Rick Lipkin
hello rick
Thanks for your collaboration and for the code.
To send mail, I use a function since 2000 very simple and effective.
It works the same as yours, but in this case I cannot allow that a copy of the mail stay on the sent folder of user's machine because it will be used to send the request for a security key generated by the system.
If remain a copy of the mail in the outlook or any other administrator such as thumderbird, incredimail, etc., the user who requests it will be able to see it in the SENT folder since the program generates the password and sends it to the administrator of the system for aprobation. I hope I have explained myself.

This is an example of the code i have been using for years

Code: Select all

Static function doit(cNombreE,cMailE,aCustomer)

local oMail
local cSubject := 'LG Electronics De Venezuela, C.A. (Su orden de reparacion/chequeo ha sido procesada)'
local cMessage := 'Estimado(s) Sr(es).: '+cNombreE+CRLF

DEFINE MAIL oMail SUBJECT cSubject TEXT cMessage

  oMail:aRecipients = aCustomer

ACTIVATE MAIL oMail

return .t.
 
As you can see, it is very simple and basic, but so far it has worked well for me.
Any suggestions to do it in the background and without using any mail manager?

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Mon Jan 25, 2021 9:28 pm
by JoseAlvarez
Armando wrote:Rick:

Thanks for your code.

I have a couple of questions for you.

First question, how can I know that the mailing failed?

Second question, your code works well, when sending the
mail shows me Outlook screen for a few seconds, is there a way to avoid it?

Best regards
Armando, el código que le mostré a rick, no muestra ni abre el administrador de correo que yo uso que es el THUNDERBIRD, todo es transparente al usuario.
No se como se comportará con el outlook.

Para afinarla más, se le podría agregar un par de cosas, como un mensaje indicando si el correo se envió con éxito o no y un gif de espera que indique que esta siendo enviado el correo.

Si lo haces y te funciona, te acuerdas de este amigo :D

Re: ¿Alguna funcion para enviar email desatendido xHarbour?

Posted: Tue Jan 26, 2021 2:57 pm
by Rick Lipkin
Armondo

Use try\catch

Code: Select all

Try
   oOutLook: = TOleAuto ( ) : New ( "Outlook.Application" )
Catch
    Saying: = "For some Odd reason The Outlook e-mail CLient failed to Initialize"
    Msginfo ( Saying )
    Return ( .f. )
End Try


 
Rick Lipkin