Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Como Envio Correo con Copias? (https://www.clubdelphi.com/foros/showthread.php?t=50155)

Alejandro73 09-11-2007 17:07:30

Como Envio Correo con Copias?
 
Hola Amigos del Club

Estoy buscando como enviar un correo con varios destinatarios en CC, no he encontrada nada en los foros, si alguien me puede ayudar se lo agradecere

Aqui apunto el codigo

procedure TForm002.BitBtn5Click(Sender: TObject);
var
smtp: TIdSMTP;
mail: TIdMessage;
begin
{Buscar Correo del Destinatario}
smtp := TIdSMTP.Create(Self);
mail := TIdMessage.Create(Self);
with smtp do
begin
Port :=25;
Host :='nombrehost';
Username:='';
Password:='';
end;
with mail do
begin
Recipients.Add;
{Adiciona Destinatario al Correo}
Recipients[0].Name :=EditDestinatario.Text; {Nombre del Destinatario}
Recipients[0].Address:=EditDestino.Text; {Correo del Destinatario PARA}
From.Name :='xxxxx'; {Nombre del Remitente}
From.Address :='usuario@dominio';{Correo del Remitente}
Subject :=EditAsunto.Text {Asunto}
Body.Text :=Memo1.Lines.Text;
{Adiciona Destinatario CC AL Correo}
if EditConCopia.Text<>''
then begin CCList.Add.Address:=EditConCopia.Text;
{destino01@dominio;destino02@dominio;destinon@dominio}
end;
end;
smtp.Connect;
Screen.Cursor:=CrDefault;
try
try
smtp.Send(mail);
ShowMessage('Mensaje Enviado Satisfactoriamente');
except
on E: Exception do
ShowMessage('Ocurrio un Error al Intentar enviar Automaticamente el Mensaje');
end;
finally
if smtp.Connected then
smtp.Disconnect;
end;
mail.Free;
smtp.Free;
end;

El Problema se me presenta cuan coloco + de una direccion en EditConCopia.text, lo probe separandolo con "," y ";" pero no funciona, si alguien tiene me pude indicar que estoy haciendo mal se lo agradecere.

Gracias

Alejandro
Valparaiso - CHILE

enecumene 09-11-2007 18:48:56

Hola Alejandro, que tal?, mira trata para la proxima vez usar las etiquetas para que el contenido del mensaje sea mas legible.

Código Delphi [-]
procedure TForm002.BitBtn5Click(Sender: TObject);
var
   smtp: TIdSMTP;
   mail: TIdMessage;
 begin
  {Buscar Correo del Destinatario}
  smtp := TIdSMTP.Create(Self);
  mail := TIdMessage.Create(Self);
  with smtp do
  begin
   Port    :=25;
   Host    :='nombrehost';
   Username:='';
   Password:='';
  end;
  with mail do
  begin
   Recipients.Add;
   {Adiciona Destinatario al Correo}
   Recipients[0].Name   :=EditDestinatario.Text; {Nombre del Destinatario}
   Recipients[0].Address:=EditDestino.Text; {Correo del Destinatario PARA}
   From.Name            :='xxxxx'; {Nombre del Remitente}
   From.Address         :='usuario@dominio';{Correo del Remitente}
   Subject              :=EditAsunto.Text {Asunto}
   Body.Text            :=Memo1.Lines.Text;
   {Adiciona Destinatario CC AL  Correo}
   if EditConCopia.Text<>''
    then begin                CCList.Add.Address:=EditConCopia.Text; 
{destino01@dominio;destino02@dominio;destinon@dominio}
         end;
  end;
  smtp.Connect;
  Screen.Cursor:=CrDefault;
  try
   try
    smtp.Send(mail);
    ShowMessage('Mensaje Enviado Satisfactoriamente');
   except
    on E: Exception do
     ShowMessage('Ocurrio un Error al Intentar enviar Automaticamente el Mensaje');
   end;
  finally
   if smtp.Connected then
      smtp.Disconnect;
  end;
  mail.Free;
  smtp.Free;
end;

Saludos.

BlueSteel 09-11-2007 19:06:36

Hola Alejandro73

Mira, veo que trabajas con el componente TIdMessage.. bueno, si observas sus propiedades te podras dar cuenta que existe

BccList, la cual genera un listado con Address, Name y Text

para agregar Cc, tendrias que usar algo así como

Código Delphi [-]
 
IdMessage.BccList[0].Address := direccion_correo@dominio
idMessage.BccList[1].Address := direccion_correo2@dominio

en realidad no he probado esto.. pero deberia andar por ahí el asunto.. espero que te sirva.. suerte

Alejandro73 09-11-2007 19:11:44

Gracias

Primero que todo como se utilizan las etiquetas? y segundo tengo en una sola linea las direcciones de las copias y me pregunto como puedo agregarlas una a uno como dices Blusteel


Alejandro

BlueSteel 09-11-2007 19:12:00

aprovechando el hilo.. te dejo el codigo que utilizo para enviar correo desde delphi.. con archivo adjunto

Código Delphi [-]

     With IdMessage Do
     Begin
          Body.Clear;
          Body.Add(vMensaje.Text);
          From.Text := 'cuenta@dominio';
          Recipients.EMailAddresses := vPara.Text;
          // Aquí deberias poner BccList[0].Address := direccion_correo@dominio
          Subject := vAsunto.Text;
          Priority := TidMessagePriority(mpHighest);
          TidAttachment.Create(IdMessage.MessageParts,Archivo.pdf);
     End;

     With IdSMTP do
     Begin
          Username := 'cuenta';
          Password := 'contaseña';
          Host     := 'IP o nombre de la maquina';
          Port     := 25;
          try
             Connect;
             Try
                Send(IdMessage);
             Finally
                Disconnect;
             End;
             ShowMessage('Se envio el archivo en forma correcta');
          Except
                On E: EIdProtocolReplyError Do
                   ShowMessage('E-Mail no se ha podido enviar');
                On E: EFOpenError Do
                   Begin
                        ShowMessage('E-Mail no se ha podido enviar' + #13 +
                                    'Fichero Adjunto desconocido o erróneo.');
                   end;
                On E: EIdSocketError Do
                   Begin
                        ShowMessage('E-Mail no se ha podido enviar'+ #13 +
                                    'Host desconocido o incorrecto.');
                   end
                Else
                   ShowMessage('Fallo en el envio de email');
          End;
         If Connected Then Disconnect;
     End;
     Close;

BlueSteel 09-11-2007 19:20:27

Cita:

Empezado por Alejandro73 (Mensaje 244970)
Gracias

Primero que todo como se utilizan las etiquetas? y segundo tengo en una sola linea las direcciones de las copias y me pregunto como puedo agregarlas una a uno como dices Blusteel
Alejandro

los de las etiquetas es sencillo, una vez escrito lo que quieres poner debes seleccionarlo y despues precionas el boton de tipo que sea.. delphi.. sql.. php.. etc..

si tienes todas las direcciones,, bastaria que ellas esten separadas entre sí por punto y coma (;)... y se las agregas

suponiendo que tienes esto
Código Delphi [-]
 
listado_direcciones_con_copia.text := 'correo1@dominio.com; correo2@dominio2.com; correo3@dominio.com';
BccList[0].Address := listado_direcciones_con_copia.text;

aunque seria bueno que especifíques desde donde obtienes las direcciones de correos, si estas las ingresan en el momento. o las capturas desde otro lado...

si las capturas... puedes hacer algo asi

Código Delphi [-]
correo_copia : String;
 
correo_copia := ''; // antes de agregar limpias
 
// este codigo que viene.. deberia estar cada vez que agregas una dirección.. si las seleccionas de algun lado por ej.
correo_copia := Concat(correo_copia,';',ConCopia.Text);

espero que te sirva...:p:D

enecumene 09-11-2007 19:23:56

Cita:

Empezado por Alejandro73 (Mensaje 244970)
Gracias

Primero que todo como se utilizan las etiquetas? y segundo tengo en una sola linea las direcciones de las copias y me pregunto como puedo agregarlas una a uno como dices Blusteel


Alejandro

Hola:



en la parte donde esta encerrada son las etiquetas del foro, como usarla? ejemplo, para codigos delphi se encierra el codigo asi:

[ DELPHI ] codigo [ /DELPHI ]

quedaria asi

Código Delphi [-]
codigo


o tambien seleccionando la parte del codigo y presionar en el menu del panel el icono que parece una casita.

espero que te sirva.

Saludos.

Alejandro73 09-11-2007 19:55:45

Codigo y Copias
 
Gracias a Ambos

Luego les cuento como me fue ;)

richy08 18-07-2008 17:29:45

Cita:

Empezado por BlueSteel (Mensaje 244972)
aprovechando el hilo.. te dejo el codigo que utilizo para enviar correo desde delphi.. con archivo adjunto


Código Delphi [-]

With IdMessage Do
Begin
Body.Clear;
Body.Add(vMensaje.Text);
From.Text := 'cuenta@dominio';
Recipients.EMailAddresses := vPara.Text;
// Aquí deberias poner BccList[0].Address := direccion_correo@dominio
Subject := vAsunto.Text;
Priority := TidMessagePriority(mpHighest);
TidAttachment.Create(IdMessage.MessageParts,Archivo.pdf);
End;

With IdSMTP do
Begin
Username := 'cuenta';
Password := 'contaseña';
Host := 'IP o nombre de la maquina';
Port := 25;
try
Connect;
Try
Send(IdMessage);
Finally
Disconnect;
End;
ShowMessage('Se envio el archivo en forma correcta');
Except
On E: EIdProtocolReplyError Do
ShowMessage('E-Mail no se ha podido enviar');
On E: EFOpenError Do
Begin
ShowMessage('E-Mail no se ha podido enviar' + #13 +
'Fichero Adjunto desconocido o erróneo.');
end;
On E: EIdSocketError Do
Begin
ShowMessage('E-Mail no se ha podido enviar'+ #13 +
'Host desconocido o incorrecto.');
end
Else
ShowMessage('Fallo en el envio de email');
End;
If Connected Then Disconnect;
End;
Close;



Hola bluee steel heestado leyendo tu post para enviar correos a que maquina te refieres con Host? gracias de antemano

richy08 18-07-2008 18:31:45

Ya encontre la solucion muy buen post Gracias:D.


La franja horaria es GMT +2. Ahora son las 17:46:41.

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