PDA

Ver la Versión Completa : Envio de email automaticamente


Vales08
03-11-2012, 23:51:16
Buenas tardes, es la primera vez que me toca programar envio de email, por lo tanto estoy muy desorientada.. Les comento lo que necesito para ver si me pueden ayudar, eh visto mucho codigo pero no se por donde empezar..

Estoy haciendo un programa que cumple la funcion de otorgar turnos para un hospital. Se permite el ingreso de pacientes, profesionales, turnos, historias clinicas y demas.. Lo que yo necesito es que cuando se genere un turno a tal dia y tal fecha a determinado paciente, se le comunique automaticamente a dicho paciente de su turno con la fecha y la hora..
No necesito armar un formulario con edit y un memo para crear un correo porque no es la idea..
Cada paciente tiene cargado su email, por lo tanto se le tendria que mandar el correo a ese email automáticamente..

No se si habra algun codigo de este estilo que necesito..

Muchas gracias de antemano.. Estoy utilizando Delphi 7

ecfisa
04-11-2012, 00:00:24
Hola Vales.

Justamente se trató un tema similar hoy en este hilo (http://www.clubdelphi.com/foros/showthread.php?t=81324).

Saludos.

nlsgarcia
04-11-2012, 01:14:03
Vales08,

Revisa estos links:

http://delphi.about.com/od/indy/a/email-send-indy.htm

http://delphi.about.com/od/windowsshellapi/a/executeprogram.htm

http://delphi.about.com/cs/adptips2000/a/bltip0800_3.htm

http://delphiallimite.blogspot.com.ar/2006/07/enviando-un-correo-con-indy.html

http://www.clubdelphi.com/foros/showthread.php?t=23265

http://www.clubdelphi.com/foros/showthread.php?t=79964&highlight=email

http://www.delphisources.ru/pages/faq/master-delphi-7/content/LiB0190.html

http://delphi.cjcsoft.net/viewthread.php?tid=45523

http://www.marshallsoft.com/
Creo que los links anteriores te servirán de base para el envío de email desde Delphi 7.

Espero sea útil :)

Nelson.

Vales08
04-11-2012, 03:11:32
Muchas gracias por sus aportes, voy a probar con todo esto para ver si logro lo que quiero...

Lenny
06-11-2012, 16:35:33
Estimado, no sé si es exactamente lo que necesitas, en mi caso me toco hacer algo similar para otros propósitos y pase varios días rebuscando el cómo ajustar los códigos y ayudas (invaluables por lo demás) que amablemente (a pesar de lo pregunton y bruto para entender que soy) los integrantes de CLUBDELPHI me fueron dando, mas menos te explico y dejo mi código modificado mas menos a tu idea para orientarte al respecto:
SI necesitas que se envié automático al generar X acción (generar orden, guardar info, hora especifica, etc) la mejor opción (de todas las que probé la que mejor funciona para este caso) es usar de las indy el "IdMessage" e "IdSMTP".
El IdSMTP lo rellenas con los datos de la cuenta que enviara el mail (Host, Password, port, username) ahora a definir cuales serian los pasos previos antes de enviar el mail.
Supongo que al generar la orden debes tener los datos del paciente, el día, la fecha y el doc que lo va a atender, dependiendo de cómo trabajes esta info puedes guardarla en una variable u obtenerlas directamente de la base de datos (en este caso ni idea cual usas, yo utilizo mysql).
Ahora el código según todo esto debería quedar algo así:

procedure TEnvioConsultas.Button1Click(Sender: TObject);
var
Lista: String;
begin

....
....
....

BDatos.RegConsulta_T.Edit;
BDatos.RegConsulta_T.FieldbyName ('EstadoConsulta').AsString:= 'Enviado';
BDatos.RegConsulta_T.FieldbyName ('FechaGeneracion').AsDateTime:= now;
BDatos.RegConsulta_T.Post;

IdMessage1.ContentType := 'text/plain';
IdMessage1.CharSet := 'UTF-8';
IdMessage1.Recipients.EMailAddresses := Lista;
IdMessage1.From.Address:= 'sistemaconsulta@matasanos.org';
IdMessage1.Subject:='Clinica Matasanos - Consulta';
IdMessage1.Body.Text:=
'Para su información :' + #13#10 + #13#10 +
'El usuario/a '+ BDatos.RegConsulta_T.FieldbyName('Usuario').asString +
' ha ingresado su consulta ' + BDatos.RegConsulta_T.FieldbyName('Consulta').asString +
', Orden N° '+ BDatos.RegConsulta_T.FieldbyName('Orden').asString + ' Con fecha '+ BDatos.RegConsulta_T.FieldbyName('FechaIngreso').asString +'''' + #13#10 +
'Area/Especialista:'+ BDatos.RegConsulta_T.FieldbyName('AreaEspecialista').asString + '''' + #13#10 +
'Doctor: : '+ BDatos.RegConsulta_T.FieldbyName('Doctor').asString +'''' + #13#10 +
'Descripción de la consulta: '+ BDatos.RegConsulta_T.FieldbyName('DesCOnsulta').asString +''''+ #13#10 +
'Por favor comunicarse a la brevedad para confirmar la hora y asistencia.' + #13#10 +
'' + #13#10 +
'Atte.' + #13#10 +
'Clinica Matasanos, si lo matamos Dios asi lo quiso, si queda vivo es por que somos los mejores.';
IdSMTP1.Connect;
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;
Close;
MessageBox(Handle,
PChar('La consulta fue ingresada con exito.' + #13#10 +
'Consulta N° ' + DBEdit1.Text +'.'),
PChar('Clinica Matasanos'),
MB_OK + MB_ICONINFORMATION + MB_DEFBUTTON1 + MB_APPLMODAL);
end;


Es una forma sencilla de enviar mails predefinidos y automaticos, hasta el momento nunca he tenido problemas con este codigo y cada vez que necesito hacer un autoenvio despeus de ciertas condiciones utilizo algo como esto.

El RegConsulta_T es un Table, cambio de nombre para pdoer identificarlos mas facil, en la linea "IdMessage1.Recipients.EMailAddresses := Lista;" la palabra lista la tengo como variable por si necesitas enviar este mail a mas de una persona u/o registro, puedes tratar eso como mejor estimes.

Espero no haber lateado mucho y estar mas menos cercano a lo que necesitas, me han ayudado demasiado y he aprendido mucho en Club Delphi como para no intentar al menos devolver la mano con personas que se topan con los mismos problemas que uno ya ha solucionado, ojala te sirva todo esto, estare pendiente a tus comentarios.
Saludos!!!

PD: alguien me puede decir por que demonios me quedo "corrida" la respuesta (mas grande que los otras respuestas)???

Vales08
06-11-2012, 21:54:57
Muchas gracias Lenny, precisamente estaba necesitando algo asi, lo voy a probar y consultar con mi director de tesis, Ojala funcione y no tenga mayor dificultad..
Es muy cierto, yo tambien eh aprendido y me han ayudado muchos los de foro club delphi.. Es por ello que siempre acudo a ustedes porque se que es informacion y ayuda confiable..

Los estare informando como me fue..

PD: para mi te quedo muy largo porque el codigo delphi era largo y te extendio el cuadrado de la respuesta mas ancho..

Muchas gracias.-

Lenny
06-11-2012, 22:15:31
Jajajaja dale, sorry eres "Estimada" en ves de "Estimado", Estimada espero te sirva el codigo y el director de tesis este de acuerdo con el, en todo caso este codigo lo tengo ams menos "dominado" por si no entiendes algo o necesiats hacer algun cambio y no sepas como, cualquier cosa estaremos atentos para ayudarte en lo que podamos, eso si, favor dar la version de delphi que usas, base de datos, conector, etc para poder responder lo mas especifico posible, quedamos atentos a tus comentarios...

PD: Seeeee... puede ser eso del codigo largo...
PD2: Cuidado con quienes se pongan muy "amables" por estos lares, mira que una mujer con estos intereces entre tanto hombre... Naaaa, broma... saludos...

Casimiro Notevi
07-11-2012, 00:43:17
PD2: Cuidado con quienes se pongan muy "amables" por estos lares, mira que una mujer con estos intereces entre tanto hombre... Naaaa, broma... saludos...

Hay más chicas en clubdelphi, incluso una de ellas es moderadora y una super experta programadora delphi y sql, se trata de Caro (http://www.clubdelphi.com/foros/Caro).

Lenny
07-11-2012, 01:01:55
Hay más chicas en clubdelphi, incluso una de ellas es moderadora y una super experta programadora delphi y sql, se trata de Caro (http://www.clubdelphi.com/foros/Caro).

Jajajaja, dale, es bueno saberlo, solo lo dije en tono de broma como menciono al final, no sea que espante a la niña con mis comentarios saludos...