Avatar billede dennism Nybegynder
28. januar 2008 - 00:13 Der er 5 kommentarer og
1 løsning

PHP: Læs fra IMAP

Jeg sidder og prøver at lave en PHP script som læser fra min IMAP server (hMailServer) og laver en liste over alle de meddelelser som ligger på kontoen (og udskriver samtidig størrelsen af filen):

<?php
$server = "";
$username = "";
$password = "";
$imap = imap_open("{".$server.":143}", $username, $password) or die("Connection to server failed");

echo "<h1>Mailboxes</h1>";
$mailboxes = imap_listmailbox($imap, "{".$server.":143}", "*") or die("Unable to list mailboxes");

foreach ($mailboxes as $val) {
    echo "<strong>$val</strong><br>";   
    $headers = @imap_headers($imap) or die("Unable to get emails");
    for($i = 1; $i <= sizeof($headers); $i++) {
        $imap2 = imap_open($val, $username, $password) or die("Connection to server failed");
        $mailHeader = @imap_headerinfo($imap2, $i);
        echo  $mailHeader->Subject.", size:".$mailHeader->Size."<br>";
        imap_close($imap2);
    }
}

imap_close($imap);
?>

Når jeg kører det, får jeg dette:

Mailboxes
{mail.demahost.dk:143}INBOX
Unable to get emails

Det er altså denne linie, som laver fejl:
$headers = @imap_headers($imap) or die("Unable to get emails");

Nogen der kan fortælle mig hvorfor?
Avatar billede coderdk Praktikant
28. januar 2008 - 14:01 #1
Prøv at fjerne @ og se hvad den skriver...
Avatar billede kjeldsted Novice
31. januar 2008 - 17:13 #2
Du mangler at angive hvilken servertype du bruger. Du skal altså ændre
$imap = imap_open("{".$server.":143}", $username, $password)

til

$imap = imap_open("{".$server.":143/imap}", $username, $password)

Medmindre du vil bruge pop3 portokollen, hvilket dog ikke kan anbefales da dette kan skabe problmer.
Avatar billede dennism Nybegynder
05. februar 2008 - 23:50 #3
Jeg får desværre stadig samme fejl :(

Jeg har denne kode:

$imap = imap_open("{".$server.":143/imap}", $username, $password) or die("Connection to server failed");

echo "<h1>Mailboxes</h1>";
$mailboxes = imap_listmailbox($imap, "{".$server.":143}", "*") or die("Unable to list mailboxes");

foreach ($mailboxes as $val) {
    echo "<strong>$val</strong><br>";   
    $headers = imap_headers($imap) or die("Unable to get emails");
    for($i = 1; $i <= sizeof($headers); $i++) {
        $imap2 = imap_open($val, $username, $password) or die("Connection to server failed");
        $mailHeader = @imap_headerinfo($imap2, $i);
        echo  $mailHeader->Subject.", size:".$mailHeader->Size."<br>";
        imap_close($imap2);
    }
}

imap_close($imap);
Avatar billede kjeldsted Novice
06. februar 2008 - 14:33 #4
Hm... På det system jeg arbejder på pt. kører jeg godt nok på imap_header (alias: imap_headerinfo), men det er jo ikke en forklaring på hvorfor imap_headers ikke virker. Men det tyder på at der muligvis kan være en fejl i imap_open koden. Hvis ikke det allerede er sket, kan du dobbelttjekke at du skal bruge mail.demahost.dk som server, 143 som port samt imap som protokol.
Avatar billede dennism Nybegynder
12. april 2008 - 14:51 #5
Vil du smide et svar?
Avatar billede dennism Nybegynder
25. april 2008 - 10:27 #6
.lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester