PDA

Ver la Versión Completa : Como Envio Correo con Copias?


Alejandro73
09-11-2007, 17:07:30
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.

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


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



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

listado_direcciones_con_copia.text := 'correo1@dominio.com ('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


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

http://img148.imageshack.us/img148/9595/panelww5.th.jpg

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

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
Gracias a Ambos

Luego les cuento como me fue ;)

richy08
18-07-2008, 17:29:45
aprovechando el hilo.. te dejo el codigo que utilizo para enviar correo desde delphi.. con archivo adjunto


Código Delphi [-] (http://www.clubdelphi.com/foros/#)

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.