php-imap icon indicating copy to clipboard operation
php-imap copied to clipboard

$oAttachment->getContent() retorna false

Open YaszCarol opened this issue 1 year ago • 1 comments

Após a conexao e pegar as mensagens, o codigo é foreach ($aMessage as $oMessage) {

                        if ($oMessage->hasAttachments()) {
                            $aAttachment = $oMessage->getAttachments();
                            $aAttachment->each(function ($oAttachment) {

                                dd($oAttachment->getContent());
 dessa forma me retornando false quando existe o arquivo no e-mail, o objeto Webklex\IMAP\Attachment é criado certinho e existe o atributo dessa forma:
 +attachments: Webklex\IMAP\Support\AttachmentCollection {#12668
  #total: null
  #items: array:1 [
    0 => Webklex\IMAP\Attachment {[#7072](https://github.com/Webklex/php-imap/issues/new?assignees=&labels=&projects=&template=general-help-request.md#sf-dump-1888554629-ref27072)}
  ]
}
alguém consegue me dizer o porque nao consigo obter o conteudo desse arquivo com $oAttachment->getContent() ?

YaszCarol avatar Oct 24 '24 12:10 YaszCarol

Após alguns dias de investigação, identifiquei a origem do problema: a função decodeString estava utilizando a função nativa imap_base64, que, por algum motivo, não conseguia decodificar corretamente o conteúdo em Base64. Acredito que o erro tenha ocorrido devido a quebras de linha no texto codificado.

Para corrigir, adicionei o seguinte código no case IMAP::MESSAGE_ENC_BASE64:

$content = \imap_base64($string); if (!$content) { $content = base64_decode($string); } return $content; Essa alteração resolveu o problema, e agora a decodificação funciona corretamente!

{9E68DC62-E0BA-4318-B0A4-599804D74781}

YaszCarol avatar Oct 30 '24 14:10 YaszCarol