php-imap
php-imap copied to clipboard
$oAttachment->getContent() retorna false
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() ?
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!