thumbnail

Seu e-mail está de dieta ou já comeu todo o armazenamento? Verificando cota com PHP

Yuri do Monte Yuri do Monte | 5 min de leitura
há 2 semanas

Seu e-mail está de dieta ou já comeu todo o armazenamento? 

Verificando cota com PHP.......

Fala dev.. blz?

Sabe aquele momento em que alguém tenta te mandar um e-mail e recebe uma mensagem dizendo que sua caixa está cheia? Pois é. A caixa de entrada estava lá, tranquila, acumulando boletos, newsletters esquecidas, anexos gigantes e aquele PDF chamado final_agora_vai_versao_7.pdf, até que um dia ela simplesmente grita: chega.
A boa notícia é que dá para verificar a quantidade de espaço usado na caixa de e-mail com PHP usando IMAP. A ideia é simples: conectar ao servidor de e-mail, perguntar qual é a cota de armazenamento e mostrar para o usuário se ainda tem espaço ou se já está na hora de fazer aquela faxina digital.


Aviso importante: nunca publique usuário, senha ou senha de aplicativo em posts, repositórios ou prints. No exemplo abaixo, use variáveis de ambiente para proteger suas credenciais. Senha exposta na internet é igual deixar a chave de casa embaixo do tapete com uma placa escrito “pode entrar”.



O que esse código faz?

O script conecta ao servidor IMAP, acessa a caixa de entrada e tenta consultar a cota de armazenamento. Se conseguir, ele mostra quanto espaço está sendo usado, qual é o limite total e a porcentagem ocupada. Se a caixa estiver acima de 90%, ele manda aquele recado carinhoso: está na hora de apagar uns anexos de 2014.

image.png 34.46 KB




Exemplo de código


<?php
$mailbox = "{imap.gmail.com:993/imap/ssl}";
$user = getenv('IMAP_USER');
$password = getenv('IMAP_PASSWORD');
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Verificador de Cota</title>
</head>
<body>

<div id="status">
    <p id="msg1">Conectando ao servidor IMAP... segure seu café.</p>
    <p id="msg2" style="display:none">Verificando a cota de armazenamento... procurando os e-mails obesos.</p>
</div>

<div id="resultado" style="display:none">
    <?php
        sleep(2);

        $imap = imap_open($mailbox, $user, $password);

        if ($imap) {
            $quota = imap_get_quotaroot($imap, "INBOX");

            if (is_array($quota) && isset($quota['STORAGE'])) {
                $usage = $quota['STORAGE']['usage'];
                $limit = $quota['STORAGE']['limit'];
                $percentual = ($usage / $limit) * 100;

                echo "Conexão concluída com sucesso! ";
                echo "Cota de armazenamento:  ";
                echo "Em uso: " . round($usage / 1024, 2) . " MB / " . round($limit / 1024, 2) . " MB ";
                echo "Porcentagem: " . round($percentual, 2) . "% ";

                if ($percentual >= 90) {
                    echo "Alerta: sua caixa de e-mail está quase pedindo aposentadoria. Hora da faxina!";
                } else {
                    echo "Tudo certo! Sua caixa ainda tem espaço para mais boletos, newsletters e anexos misteriosos.";
                }
            } else {
                echo "Não foi possível obter informações de cota. O servidor ficou tímido.";
            }

            imap_close($imap);
        } else {
            echo "Erro ao conectar: " . imap_last_error();
        }
    ?>
</div>

<script>
    setTimeout(() => {
        document.getElementById('msg1').style.display = 'none';
        document.getElementById('msg2').style.display = 'block';
    }, 1000);

    setTimeout(() => {
        document.getElementById('status').style.display = 'none';
        document.getElementById('resultado').style.display = 'block';
    }, 2000);
</script>

</body>
</html>



Como configurar com segurança

Em vez de colocar login e senha diretamente no arquivo PHP, configure variáveis de ambiente no servidor. Assim, o código fica mais seguro e você evita transformar suas credenciais em conteúdo público.



export IMAP_USER="seu-email@gmail.com"
export IMAP_PASSWORD="sua-senha-de-aplicativo"




No PHP, você recupera esses valores com:

$user=getenv('IMAP_USER');
$password=getenv('IMAP_PASSWORD');



Esse cuidado é especialmente importante quando você usa contas do Gmail, porque normalmente será necessário utilizar uma senha de aplicativo, e não a senha principal da conta. Mesmo assim, essa senha deve ser tratada como informação sensível.

Pequenas melhorias que deixam o código mais simpático

Além de mostrar os números, o código também usa mensagens de carregamento no HTML com JavaScript. Isso dá uma sensação de progresso para o usuário, em vez de deixar a tela parada parecendo que o PHP foi tirar um cochilo.

image.png 31.55 KB
Link do repositório: https://github.com/yuri-spm/analyzing_email_inbox/blob/main/index.php

Conclusão

Com poucas linhas de PHP, dá para criar um verificador simples de espaço da caixa de e-mail. Ele conecta ao IMAP, consulta a cota, calcula a porcentagem usada e ainda avisa se a caixa está perto de virar um depósito arqueológico de anexos antigos.

No fim das contas, monitorar a cota do e-mail é como cuidar da geladeira: se você nunca olha, uma hora aparece coisa vencida, ocupa espaço e ninguém sabe de onde veio.





Comentários

Realize login para comentar neste post
Este post não possui comentários