Informações úteis sobre o cabeçalho IMAP não são exibidas
Estou usando funções padrão do IMAP para receber e-mails em PHP. Eu preciso acompanhar oMessage-ID
(eReferences
eIn-Reply-To
) para cada mensagem para construir threads. Depois que esse sistema for implementado, eu quero que os usuários possam responder às mensagens em seu cliente de e-mail para adicionar uma mensagem a um encadeamento, mas na minha interface da web, as respostas não podem ser anexadas à postagem original porque não tenho aIn-Reply-To
ID de qualquer cabeçalho de email. eu usariaIn-Reply-To
ID para anexar a resposta à notificação que eu enviei para uma nova postagem, mas não consigo, porque não consigo os IDs. Se eu tivesse umIn-Reply-To
cabeçalho, as mensagens podem ser agrupadas, pois há um segmento de IDs conectando-as.
Além disso, quero poder responder a qualquer mensagem que o usuário envie para o endereço de e-mail do servidor, caso tenha ocorrido um erro no envio deles ou algo assim.Message-ID
da sua mensagem para que eu possa fazer com que oIn-Reply-To
ID da mensagem que envio em resposta.
Eu não consigo valores paraMessage-ID
nemIn-Reply-To
mesmo que eles realmente tenham valores. (Vá para qualquer mensagem no Gmail, clique no menu suspenso ao lado do botão de resposta, clique em "mostrar original" e você verá que todas as informações do cabeçalho que estão faltando quando ligo para as funções IMAP estão lá, embora o Gmail não queira fornecer essas informações aos servidores IMAP.)
Eu tentei uma variedade de chamadas que supostamente obter as informações de cabeçalho (imap_headerinfo
, imap_fetchheader
, imap_fetch_overview
), mas todos eles retornam a matriz de valores esparsos para as informações de cabeçalho que eu não preciso. Depois de executar
$this->mbox = imap_open('{imap.gmail.com:993/imap/ssl}', $email, $password);
Posso obter apenas alguns valores úteis do cabeçalho com qualquer uma dessas chamadas:
imap_header($this->getImapStream(), "1");
imap_fetch_overview($this->getImapStream(), "1");
imap_fetchheader($this->getImapStream(), "1");
Eu posso ver coisas comoSubject
, To
, Reply-To
, e outros valores de cabeçalho, e eles são todos precisos, masMessage-ID
, References
, In-Reply-To
e outras informações de cabeçalho valiosas estão praticamente ausentes (em vez disso, os valores de matriz que os representam estão vazios em todos os casos).
Eu quase posso garantir que o problema não é com o código em si, como posso ver alguns valores nos cabeçalhos, e posso recuperar com sucesso os corpos das mensagens; é simplesmente como se o Google estivesse filtrando quais informações de cabeçalho eu posso ver.
Você pode perceber que eu tenho exatamente a mesma pergunta queesta página, mas foi sugerido que eu fiz a minha própria pergunta, e é isso que eu fiz.
EDITARSe alguém puder me dar uma maneira de responder a mensagens do meu servidor sem precisar recuperarMessage-ID
da mensagem à qual estou respondendo, seria igualmente incrível.
Eu listei oMessage-ID
de cada mensagem na minha caixa de entrada muito grande e, pelo que eu vejo, cerca de 40% dos IDs realmente aparecem. Se eu executar o mesmo teste novamente, as mesmas mensagens mantêm suasMessage-ID
s. Estou procurando um padrão entre as mensagens que mostram oMessage-ID
mas há fortes evidências de um não padrão entre os tipos de mensagens.
Cada mensagem, na realidade, tem umMessage-ID
(e verifiquei isso até para as mensagens cujos IDs não aparecem com as consultas IMAP), mas as funções IMAP só revelam o ID de algumas das mensagens.