Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Enviar correo a muchos.... (https://www.clubdelphi.com/foros/showthread.php?t=44093)

ronimaxh 28-05-2007 19:58:30

Enviar correo a muchos....
 
Hola amigos del club, como puedo enviar un corrreo a un grupo de empleados la información de un volante de descuentos. ese volante se encuentra en la base de datos en una vista, pero no tengo idea de como poder enviarselos a todos los empleados con sus respectivo descuentos, desde ya muchas gracias..

Nota: aqui hay un servidor de correo.

fer21unmsm 28-05-2007 22:03:18

Hola Ronimax, esa información a enviar va a ser la misma para todos, va a variar los descuentos por cada empleado, sobre que delphi, base de datos trabajas, cual es tu servidor de correo (exchange(windows), Sendmail(linux), etc?), puedes utilizar los componentes indy para eso. Puedes brindar algunos datos adicionales, como los que te pregunto arriba.

Saludos cordiales.

ronimaxh 29-05-2007 15:47:46

los descuentos varian para cada empleado, uso delphi 7, la base de datos es Sql server 2000 y el servidor de correo es exchange para windows.

AzidRain 30-05-2007 01:00:10

Aqui te dejo un código muy util para programas de este tipo:

Código Delphi [-]
procedure 
email2(host:string; nombre:string; password:string; port:integer; desde:string;
    hasta:string; asunto:string; cuerpo:string; adjunto:string);
  var
      IDSMTP1: TIDSMTP;  // Componente de envio de correo
      mensaje: TIdMessage;
      dirs:String;
      c:Integer;
  begin
  IDSMTP1:=TIDSMTP.Create(nil);
  IdSMTP1.AuthenticationType :=atLogin;
  IdSMTP1.UserId := nombre;
  IdSMTP1.Password := password;
  IdSMTP1.Host := host;
  IdSMTP1.Port := port;
  MENSAJE:=TIDMESSAGE.CREATE(nil);

  with Mensaje do
  begin
     Body.Add('Por este medio le enviamos la información solicitada de sus embarques.');
     Body.Add(' Esperamos le sea de la mayor utilidad y le reiteramos nuestro compromiso de servirle.');
     Body.Add('Atentamente');

dirs:='';
    From.Text := desde;
    Replyto.EMailAddresses:='[email protected]'; //aqui le pones lo que corresponda

   

    Recipients.EMailAddresses :=  dirs; //aqui van las direcciones.;
    Subject := asunto;
    Priority := TIdMessagePriority(mpHighest);//prioridad del mensaje
    CCList.EMailAddresses :='[email protected]'; //con copia para quien quieras
    BccList.EMailAddresses := '';
    TIdAttachment.Create(Mensaje.MessageParts,adjunto);
  end; //configuracion server smtp
  with idsmtp1 do
  begin
   try
      Connect;
      try
        // Envio el mensaje.
        Send(Mensaje);
      finally
        Disconnect;
      end;
  //    MessageDlg('Enviado Correctamente', mtInformation, [mbOK], 0);
    except
       // Capturo algunas excepciones que pueden ocurrir
      ON E: EIdProtocolReplyError do begin
      MessageDlg('No se ha podido enviar el email.' + #13 +
            'Incorrecto el email o el usuario o la password.', mtError, [mbOK], 0);
      end;
      on E: EFOpenError do begin
      MessageDlg('No se ha podido enviar el email.' + #13 +
            'Fichero Adjunto desconocido o erróneo.', mtError, [mbOK], 0);
      end;
      on E: EIdSocketError do begin
      MessageDlg('No se ha podido enviar el email.'+ #13 +
            'Host desconocido o incorrecto.', mtError, [mbOK], 0);
      end
      else begin
      MessageDlg('Fallo en el envio de email', mtError, [mbOK], 0);
      end;
    end;
  end;
  IDSmtp1.Free;
  Mensaje.Free;
  ENd;

Para usarlos simplemente obtienes el query con los datos de los empleados (incluyendo sus mails) y la recorres mandandoles a cada uno su mail con ayuda de esta función.

Si es el mismo mail para todos, simplemente creas una lista con los mails de todos: '[email protected]; [email protected]; [email protected]...' y la usas para enviar el correo, asi solo tienes que mandar la instruccion una sola vez y el servidor se encarga del resto.

Si los mails son diferentes hay que mandar uno por uno.

Ojala te sirva


La franja horaria es GMT +2. Ahora son las 04:08:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi