Ajuda - Busca - Membros - Calendário
Versão Completa: Sistema De Ler Email Pop3 Com Extenção Imap
Fórum Script Brasil > Programação & Desenvolvimento > PHP > Repositório de Scripts - PHP
Beraldo
Script postado por: Fabyo



Sistema de ler email POP3 com extenção IMAP do PHP

QUOTE
O que é IMAP?
O protocolo IMAP foi originalmente desenvolvido na Universidade de Stanford em 1986.
Trata-se de um método de acesso a mensagens eletrônicas armazenadas em um servidor local ou remoto.
IMAP quer dizer Internet Message Access Protocol [RFC 2060] e sua versão mais recente e' a IMAP4rev1 [RFC 2060]


descomente a linha do php.ini extension=php_imap.dll

obs: esse exemplo não tem suporte a MIME
Esse exemplo faz:

tratamento de erros
vê quantos emails você tem
pega o assunto,remetente,data/hora e a mensagem

CODE
<?php

/* Fabyo Guimaraes
data = 06/02/2005*/

$servidor = "seu_servidor";
$usuario = "usuario";
$senha = "senha";

@ini_set('display_errors', '0');
$mbox = imap_open("{pop3.$servidor/pop3:110}", $usuario . "@" . $servidor, $senha , OP_HALFOPEN);

$erro[] = imap_last_error();
// testo se tem email no servidor
if ($erro[0] == "Mailbox is empty") {
    echo "não tem nenhuma mensagem";
    exit;
}
// verifico se esta certo o usuario e senha
elseif ($erro[0] == "POP3 connection broken in response") {
    echo "Usuario ou a senha estao errados";
    exit;
}
// testo se o servidor esta certo
elseif ($erro[0] == "Host not found (#11004): pop3.$servidor") {
    echo "O servidor $servidor esta errado";
    exit;
}
// se a $erro estiver vazia ele continua
if ($erro[0] == "") {
    $numero_mensagens = imap_num_msg($mbox);
    $numero_mens_nao_lidas = imap_num_recent($mbox);

    if ($numero_mensagens == 1) {
        echo "você tem $numero_mensagens mensagem";
    } else {
        echo "você tem $numero_mensagens mensagens";
    }

    echo "<br><br>";

    for($i = 1;$i <= imap_num_msg($mbox);$i++) {
        
  $headers            = imap_header($mbox, $i);
        $assunto            = $headers->subject;
        $message_id         = $headers->message_id;
        $toaddress          = $headers->toaddress;
        $to                 = $headers->to;
        $remetente          = $to[0]->personal;
        $email_remetente    = $to[0]->mailbox;
        $servidor_remetente = $to[0]->host;
        $data               = $headers->date;
        $data               = strtotime($data);
        $data               = date("d/m/Y H:i:s", $data);

        echo "Assunto = $assunto - Remetente = $email_remetente@$servidor_remetente Data = $data <a href=\"imap.php?id=$i\">Ler Mensagem</a><br>";
    }

    echo "<br>";
    if (isset($_GET["id"])) {
        $id = $_GET["id"];

        $mensagem = imap_fetchbody($mbox, $id, 1);
        echo nl2br(quoted_printable_decode($mensagem));
    }

    imap_close($mbox);
}

?>
mestre fyoda
como eu faço para ler a mensagem dentro do imap.php ? sei que esta passando parametro mas pelo que estou vendo ele só vai passar o id , como que eu faço para pegar a meensagem ?
ESerra
Só um adendo... em alguns servidores que eu testei não funciou o script original, mas bastou alterar a linha:
CODE
$mbox = imap_open("{pop3.$servidor/pop3:110}", $usuario . "@" . $servidor, $senha , OP_HALFOPEN);

Por
CODE
$mbox = imap_open("{mail.$servidor:110/pop3}", $usuario . "@" . $servidor, $senha);

Que tudo ficou Ok...
Falcon_X
Galera...
Estou passando aqui para agradecer por este tópico..!
Me ajudou muito mesmo..!

É a primeira vez que participo de um forum... Portanto espero poder futuramente ajudar alguém que precise por aqui...

Grande abraço a todos..! wink.gif
Fábio Generoso
I'M having a little trouble while trying to connect to gmail server.


I will try to explain in details what I did.

First at all, on file php.ini I removed the comments for the line below:


extension=php_imap.dll

After that, I have followed the Gmail instructions to enable POP in my Gmail account as below:


1. Log in to your Gmail account.
2. Click Settings at the top of any Gmail page.
3. Click Forwarding and POP
4. Select Enable POP for all mail
5. Choose “Keep Gmail’s copy in the inbox” when messages are accessed with POP

When I run the simple code below:

<?
$mbox = imap_open('{pop3.gmail.com:995/pop3}INBOX', '<my_login>@gmail.com', '<my_pass>');
print_r(imap_alerts());
print_r(imap_errors());
$num_mens_not_read = imap_num_recent($mbox);
imap_close($mbox);
?>

I get these errors:

Warning: imap_open(): Couldn't open stream {pop3.gmail.com:995/pop3}INBOX in c:\arquivos de programas\easyphp1-8\www\index.php on line 2
Array ( [0] => Host not found (#11001): pop3.gmail.com )
Warning: imap_num_recent(): supplied argument is not a valid imap resource in c:\arquivos de programas\easyphp1-8\www\index.php on line 5
Warning: imap_close(): supplied argument is not a valid imap resource in c:\arquivos de programas\easyphp1-8\www\index.php on line 6

And, when I run the simple code below:

<?
$mbox = imap_open('{pop.gmail.com:995/pop3}INBOX', '<my_login>@gmail.com', <my_pass>’);
print_r(imap_alerts());
print_r(imap_errors());
$num_mens_not_read = imap_num_recent($mbox);
imap_close($mbox);
?>

I get these errors:

Warning: imap_open(): Couldn't open stream {pop.gmail.com:995/pop3}INBOX in c:\arquivos de programas\easyphp1-8\www\index.php on line 4
Fatal error: Maximum execution time of 30 seconds exceeded in c:\arquivos de programas\easyphp1-8\www\index.php on line 4
Notice: (null)(): POP3 connection broken in response (errflg=2) in Unknown on line 0


This second code looks ok for me, but for same reason I get this time out. Have you same idea what’s going on? Did I miss same configuration?

fambo
Ola,

Como posso fazer para listar os anexos?

Att,

Fabricio Boaventura
André Bento
Ola,

Podem me dar uma dica de como listar somente os e-mail não lidos e depois seta eles como lido.

Valeu pelas discas

Crash
Salve galera !!

Não entendi muito bem mas estou procurando algo que me possibilite ver meus e-mail sem ter que acessar o tal do Cpanel
Este script me possibilita isto ? ..

desculpe a ignorancia mas não manjo de php estou me envolvendo agora por tanto não me levem a mau...



Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2013 Invision Power Services, Inc.