Ticket #737 (new defeito)

Opened 10 years ago

Last modified 8 years ago

Ao desanexar uma mensagem os flags não estão sendo mantidos e a data está errada

Reported by: eduardoalex Owned by: zapa
Priority: média Milestone: Backlog do Produto
Component: ExpressoMail Version:
Severity: média Keywords:
Cc: WorkGroup:

Description

Os flags de lido, nao lido, importante, etc não estão sendo mantidos ao desanexar uma mensagem. A data também não está sendo atribuída de forma correta.

Attachments

imapAppend.php Download (1.7 KB) - added by amuller 9 years ago.

Change History

comment:1 Changed 10 years ago by niltonneto

Essa funcionalidade não pudemos utilizar até hoje aqui em produção devido a não conservação do cabeçalho original da mensagem e suas flags. Infelizmente, também não encontramos nenhum meio de corrigir isso. Alguém teve alguma idéia?

comment:2 Changed 9 years ago by valmir.sena

O problema acontece porque é copiada a mensagem para uma nova, mas os flags estão relacionados ao código da mensagem anterior no arquivo cyrus.index e a data da mensagem passada para o imap é a data do arquivo da mensagem no sistema de arquivos, como na mensagem nova é criado um novo arquivo a mesma fica com a data em que foi desanexada.

comment:3 Changed 9 years ago by valmir.sena

Complentando,

Para salvar os flags os mesmos os mesmos não são obtidos da funcão usando a função imap_fetchheader, e por isso não são salvos. Para salvar os flags, os mesmos devem ser lidos da mensagem original com a função get_header($msg_number) do próprio expressoMail e serem salvos na nova mensagem com a função imap_setflag_full do php. Já a data da mensagem apresentada é a data do arquivo da mensagem que o cyrus salvou no arquivo cyrus.index no momento da criação da mensagem.

comment:4 Changed 9 years ago by amuller

No PHP 5.3.2 foi adicionado suporte a INTERNALDATE ao imap_append. O que resolve o problema do desanexar.

Changed 9 years ago by amuller

comment:5 Changed 9 years ago by amuller

Anexei um método da class imapfp.

comment:6 Changed 9 years ago by amuller

commit r2905 arruma o problema das flags outros campos do header e ainda adiciona o campo X-Expresso-Modified no header para fins de auditoria.

comment:7 Changed 9 years ago by amuller

commit r2906 r2907 Pra quem tem php 5.3.2 ou mais atual deve funcionar

comment:8 Changed 9 years ago by amuller

r2928 testei no PHP 5.3.2 e funcionou perfeito, com data, flags e etc iguais a msg original.

comment:9 Changed 9 years ago by eduardoalex

  • Severity set to média
  • Milestone changed from Expresso 2.2 to Expresso 3.0

comment:10 Changed 9 years ago by niltonneto

Eduardo, Diogenes, Rodrigo: Acho importante replicarmos essa correção para o Branch 2.2. Assim já deixaríamos essa parte do remover anexo "redondinha" para versões >= PHP 5.3.2. Sei que não temos previsão para homologação do Expresso na 5.3, mas já pouparia esse trabalho. O que vocês acham?

comment:11 Changed 9 years ago by rodsouza

Não tenho conhecimento da real situação de tal funcionalidade, entretanto sou totalmente contra deixar o e-mail como se fosse o original pois viola a integridade e credibilidade, e o fato primordial é que no futuro jamais terá um hitórico do que foi feito.

Porém o fato do PHP vide: http://www.expressolivre.org/html/modules/newbb/viewtopic.php?post_id=11973&topic_id=1874&forum=5#forumpost11973

comment:12 Changed 9 years ago by niltonneto

Ah sim Rodrigo. Eu também concordo com vc. A solução mais correta seria apenas remover o anexo, mas temos essa deficiência na extensão nativa php-imap.

comment:13 Changed 9 years ago by rodsouza

Mesmo sendo contra tal funcionalidade, já que a mesma foi adotada então deveria ser inserido um cabeçalho que indica-se a remoção e que no início do corpo do e-mail uma indicação que existiu um anexo.

comment:14 Changed 8 years ago by niltonneto

  • Version trunk deleted
Note: See TracTickets for help on using tickets.