Page 1 of 1

Enviar mail en segundo plano

PostPosted: Sun Dec 09, 2018 12:00 am
by JoseAlvarez
Hola a todos.

Necesito que mi programa envíe un correo ya predeterminado, en segundo plano, es decir, sin ninguna intervencion del usuario.

Es para cuando alguna persona olvide su password de entrada al sistema. Deberá oprimir el boton "recuperar contraseña" y que el sistema le envie una nueva contraseña temporal al correo registrado en su ficha personal al momento en que fue creado. Solo deberá ver la acción de "Nueva contraseña envida" o "No se pudo enviar el correo"

Siempre se enviará desde la misma cuenta de correo, el mismo ID, el msimo asunto, el mismo cuerpo del correo, solo cambiará la nueva contraseña que será generada de manera aleatoria.

Todo debe hacerse automático,

Alguna ayuda?

Gracias !

Re: Enviar mail en segundo plano

PostPosted: Mon Dec 10, 2018 10:41 am
by cmsoft
Code: Select all  Expand view

#Include "FiveWin.Ch"
*-------------------------------------------------*
Function Mail(cdestino)
*-------------------------------------------------*

LOCAL loCfg, loMsg, oError, isError := .F., oRep, oPrn
local cSMTP := "smtp.gmail.com"
Local cPuerto := 465
Local cLogin := "tu_mail@gmail.com"
Local cPassword := "tu_password"
local cRemitente:= "<Tu Sistema>"
*Local cDestino := "<cgomez@mercedes.gob.ar>"
Local cAsunto := "Recuperacion de contraseña"
Local cMensaje := "Adjuntamos Su nueva contraseña"+CHR(10)+ContraseñaAleatoria() // Esta funcion deberia devolverte la contraseña
local cSSL := .T., cAuth := .T.
local cFichero := nil


// Control autentificación via SSL
cSSL := .T.

// Internet

loCfg := CREATEOBJECT( "CDO.Configuration" )
WITH OBJECT loCfg:Fields
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value := cSMTP // "smtp.gmail.com"
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport" ):Value := cPuerto //465
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusing" ):Value := 2
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := cAuth //.T.
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl" ):Value := cSSL // .T.
:Item( "http://schemas.microsoft.com/cdo/configuration/sendusername" ):Value := cLogin //tu cuenta de correo de salida
:Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword" ):Value := cPassword //"" //con tu clave gmail. en este caso
:Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := 30

:Update()
END WITH


loMsg := CREATEOBJECT ( "CDO.Message" )
WITH OBJECT loMsg
:Configuration = loCfg
:From = cLogin
:To = cDestino
:Subject = cAsunto
:MDNRequested = .T.
:TextBody = cMensaje
:Send()
END WITH

IF isError = .F.
    MsgInfo( "Mensaje enviado correctamente", " A V I S O " )
    ELSE
    MsgStop("ERROR: Se ha producido un error al enviar un mensaje al buzon "+cDestino+CRLF+CRLF+"Descripción del Error: "+oError:Description, " E R R O R ")
ENDIF

return nil

Re: Enviar mail en segundo plano

PostPosted: Mon Dec 10, 2018 2:38 pm
by karinha

Re: Enviar mail en segundo plano

PostPosted: Sun Dec 16, 2018 5:25 pm
by JoseAlvarez
Estimados CMSoft y Karinha.

Por motivos de viaje estuve alejado de la PC por varios dias. Ya regresé y consigo las respuestas a mi consulta.

Gracias una vez más por su ayuda. Siempre estan presentes. Muchísimas gracias.

CMSoft, ya probé el código que pusiste.. funciona al 100%. Agradecido !

Karinha, ya descargué el .zip que me indicas, voy a darle una mirada y te comento.

Saludos y que viva el foro !

Re: Enviar mail en segundo plano

PostPosted: Mon Dec 17, 2018 12:11 am
by cmsoft
Me alegra que te haya sido de utilidad. Espero que el viaje haya sido placentero!! :D
Abrazo