Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema De Ler Email Pop3 Com Extenção Imap


Beraldo

Pergunta

Script postado por: Fabyo

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

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

<?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);
} 

?>

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Só um adendo... em alguns servidores que eu testei não funciou o script original, mas bastou alterar a linha:

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

Que tudo ficou Ok...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest 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..! ;)

Link para o comentário
Compartilhar em outros sites

  • 0
Guest 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?

Link para o comentário
Compartilhar em outros sites

  • 0

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...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...