Ver Mensaje Individual
  #5  
Antiguo 06-11-2012
Lenny Lenny is offline
Miembro
 
Registrado: jun 2007
Posts: 161
Reputación: 17
Lenny Va por buen camino
Arrow Ejemplo

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í:

Código Delphi [-]
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)???

Última edición por Lenny fecha: 06-11-2012 a las 16:50:31. Razón: Complemento al codigo
Responder Con Cita