Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2574 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Olá.

Estou com uma dúvida refente os anexos do acbrmail e já pesquisei no fórum por todas as partes e não encontrei uma solução.

Uso normalmente o ACbrEmailCli.AddAttachment e funciona, anexo tudo que preciso.

Porém agora estou com a necessidade de ver tudo que foi anexado antes de enviar e até mesmo retirar o anexo que está ali, porém não consegui fazer e nem vi se tem no fórum algo parecido.

Como faço pra ver os anexos que já foram inseridos? 

Como faço pra remover um anexo já inserido?

Postado
1 hora atrás, Daniel Simoes disse:

Veja o exemplo:


  For I := 0 to Length(ACBrMail1.Attachments) do
  begin
    AttachmentName := ACBrMail1.Attachments[I].NameRef;
  end;

 

Opá Daniel, obrigado pela resposta!

Não Consegui aplicar no meu projeto.

[dcc32 Error] UntPrincipal.pas(489): E2003 Undeclared identifier: 'AttachmentName'

Da esse erro!

DANIEL.png

Postado
8 minutos atrás, Daniel Simoes disse:

Menos Ctrl-C, Ctrl-V...

AttachmentName  é um nome de variável qualquer, do tipo String, que você deve criar, para receber o NameRef do Anexo

Desculpe Daniel.
Realmente refiz igual você fez, literalmente ctrl-c, ctrl-v, porém agora resolveu, consegui ver o que já está anexado adicionando a um memo de referencia a arquivos anexados.

Agora a outra questão!

Sei que " ACbrmail.ClearAttachments " limpa todos os anexos contidos no componente, agora preciso deletar um anexo especifo,

EX;

XML-15171115359830000187550010000000051000000053
PDF-15171115359830000187550010000000051000000053
NFE_5.rar

Existem esses três anexos que o " Memo1.Lines.Add(ACbrEmailCli.Attachments.NameRef " me retorna, assim como você explicou.

E eu quero remover apenas o NFE_5.rar por exemplo.

 

  • Fundadores
Postado

Humm... realmente isso não será muito simples...

Lendo os fontes do ACBrMail, me desagradou  o fato de ACbrEmailCli.Attachments  ser um "array of record"... o correto seria ele ser um derivado de TList, como um TObjectList... vou promover a mudança...

Se quiser manipular com o array veja esse tópico:
http://pages.cs.wisc.edu/~rkennedy/array-delete

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado
1 minuto atrás, Daniel Simoes disse:

Humm... realmente isso não será muito simples...

Lendo os fontes do ACBrMail, me desagradou  o fato de ACbrEmailCli.Attachments  ser um "array of record"... o correto seria ele ser um derivado de TList, como um TObjectList... vou promover a mudança...

Se quiser manipular com o array veja esse tópico:
http://pages.cs.wisc.edu/~rkennedy/array-delete

Obrigado!
Vou tentar vê o que eu faço, pois alguns clientes precisam.
Mas você que e o pai da criança, consegue fazer "milagre" rsrsrs, e mudar esse array.

Também ficarei no aguardo da sua mudança.

Postado

Bom dia, Atualizei o ACBr logo pela manhã e o projeto que contém o ACBrmail não compilou logo na parte em que listava os anexos.
 

Código que não está compilando


var
i:integer;
begin

For i := 0 to Length(frmprincipalenviaemail.ACbrEmailCli.Attachments) do
      begin
        Memoanexos.Lines.Add(frmprincipalenviaemail.ACbrEmailCli.Attachments
          .Description);
      end;
 

Quando fiz o update não vi atualização do componente acbrmail!
 

Postado
3 horas atrás, Daniel Simoes disse:

Os anexos mudaram para TObjectList, veja o ACBrTCP-Change-log.txt

Obrigado Daniel.

Agora consigo remover facilmente um objeto da lista!

Vou colocar aqui os códigos para facilitar para os próximos que tiverem duvidas!


Para listar os arquivos anexados

var
  i: integer;
begin
   For i := 0 to ACBrMail1.Attachments.Count - 1 do
     begin
       //O IntToStr(i) , coloca o numero do anexo dentro do ObjectList antes do nome
        Memo1.Lines.Add(IntToStr(i) + ' - ' +ACBrMail1.Attachments.Description);
     end
;


Para Remover um item anexado

var
 item: integer;
begin
   //A variavel item e o numero do anexo dentro do objectlist
    item:= 0;
   //A Função Extract remove e já reordena
    ACBrMail1.Attachments.Extract(ACBrMail1.Attachments.Items[item]);
end;


Para apagar todos os anexos de uma vez só

 Begin
   ACBrMail1.ClearAttachments;
end;

  • Curtir 2
  • Este tópico foi criado há 2574 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.