Jump to content
Fórum Script Brasil
  • 0

Sistema De Ler Email Pop3 Com Extenção Imap


Beraldo
 Share

Question

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 protected]$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 to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...