Problemas ao anexar arquivo.

Delphi

01/08/2003

Estou lendo uma tabela com uma query, onde eu acho os parâmetros para enviar e-mail. (Delphi 7). Estou usando o Indy.

Meu código está assim:

With qSelecionaEmail do
begin
Open;
while not Eof do
begin
SMTP.Host := FieldByName(´AUD_SERSAI´).AsString;
SMTP.Username:= ´xxxxxx´;
SMTP.Password := ´*****´;
IdMessage.From.Address := ´jussara@jussara.com.br´;
IdMessage.Recipients.EMailAddresses := ´jmc.jmc@terra.com.br´
IdMessage.Subject := FieldByName(´AUD_ASSUNTO´).AsString;
IdMessage.Body.Text := ´Esta é uma mensagem automática. Favor não responder´;

Attachment.Create(IdMessage.MessageParts,FieldByName(´arq´).AsString);

e assim por diante.

Acontece que o primeiro e-mail anexa correto. O segundo, anexa o arquivo do segundo registro mais o arq. do primeiro. O terceiro anexa o terceiro arq. mais os dois primeios lidos...
Eu queria que fosse somente o arquivo referente ao arq. lido.

Alguém pode me ajudar?!


Jussara

Jussara

Curtidas 0

Respostas

Jussara

Jussara

01/08/2003

Desculpe, acabei escrevendo o título errado....

Só para complementar, minha query retornou 3 registros num teste que fiz agora. O campo arq, está com os seguintes dados, consecutivamente:
- C:\arq.pdf
- C:\arq2.pdf
- C:\arq3.pdf

Era para cada arquivo ser enviado para uma pessoa específica.
A primeira pessoa recebeu o arq.pdf. A segunda recebeu o arq.pdf e arq2.pdf. A terceira pessoa recebeu o arq.pdf, arq2.pdf e o arq3.pdf

Obrigada.


GOSTEI 0
Lfernandos

Lfernandos

01/08/2003

Olá Jussara!

Tente fazer assim:

Parece que o campo arq da sua tabela tem o path de três arquivos, logo, você precisaria por exemplo separar a string em seus respectivos arquivos.
Eu não entendi direito esta parte de como estão armazendados os nomes dos arquivos, qualquer coisa mande um e-mail.


With qSelecionaEmail do
begin
Open;
while not Eof do
begin
SMTP.Host := FieldByName(´AUD_SERSAI´).AsString;
SMTP.Username:= ´xxxxxx´;
SMTP.Password := ´*****´;
IdMessage.From.Address := ´jussara@jussara.com.br´;
IdMessage.Recipients.EMailAddresses := ´jmc.jmc@terra.com.br´
IdMessage.Subject := FieldByName(´AUD_ASSUNTO´).AsString;
IdMessage.Body.Text := ´Esta é uma mensagem automática. Favor não responder´;
IdMessage.MessageParts.Clear;

TIdAttachment.Create(IdMessage.MessageParts,FieldByName(´arq´).AsString);

Next;
end;
IdSMTP.Send(IdMessage);


GOSTEI 0
Lfernandos

Lfernandos

01/08/2003

Desculpe na verdade o código ficaria assim:
(O IdSMTP.Send(IdMessage); tem que estar dentro do laço while)

With qSelecionaEmail do
begin
Open;
while not Eof do
begin
SMTP.Host := FieldByName(´AUD_SERSAI´).AsString;
SMTP.Username:= ´xxxxxx´;
SMTP.Password := ´*****´;
IdMessage.From.Address := ´jussara@jussara.com.br´;
IdMessage.Recipients.EMailAddresses := ´jmc.jmc@terra.com.br´
IdMessage.Subject := FieldByName(´AUD_ASSUNTO´).AsString;
IdMessage.Body.Text := ´Esta é uma mensagem automática. Favor não responder´;
IdMessage.MessageParts.Clear;
TIdAttachment.Create(IdMessage.MessageParts,FieldByName(´arq´).AsString);
IdSMTP.Send(IdMessage);
Next;
end;


GOSTEI 0
Jussara

Jussara

01/08/2003

Muito obrigada.
Faltava a linha:
IdMessage.MessageParts.Clear;

Valeu.


GOSTEI 0
POSTAR