webForumDet fria alternativet

IMAP Flytta mail från Inbox

PHP

3 svar · 482 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Tja

Har byggt ett script som ska:

  • Logga in på ett mailkonto (via pop3)

  • Läsa igenom inboxen och hitta vissa attachments

  • Parsa dessa attachments och spara innehållet i en databas

  • Flytta mailen till en "Arkivmapp".

    Har kommit till sista punkten, att flytta de behandlade mailen, men har kört fast och fattar inte hur jag ska göra. Har testat 10 olika varianter och just nu får jag inga fel, men mailen ligger kvar i inboxen.

    Det här är taget från PHP.net

    $msgbox = imap_open("{addr:995/pop3/ssl/novalidate-cert}Inbox", "username", "password");
    
    $messageCount = imap_num_msg($msgbox);
    echo "Processing " . $messageCount . " messages:<Br>";
    for ($i = 1; $i <= $messageCount; ++$i) {
    	$header = imap_header($msgbox, $i);
    
    	$prettydate = date("jS F Y", $header->udate);
    	$fromHost = $header->from[0]->host;
    
    	if (isset($header->from[0]->personal)) {
    		$personal = $header->from[0]->personal;
    	} else {
    		$personal = $header->from[0]->mailbox;
    	}
    
    	$body = imap_fetchbody($msgbox, $i, "1.1");
    	if ($body == "") {
    		$body = imap_fetchbody($msgbox, $i, "1");
    	}
    
    	$move = "Inbox.test";
    	echo "trying to move:" . $i . "<br>";
    	imap_mail_move($msgbox, $i, $move);
    }
    

    Har skapat mappen "test" under Inboxen, men ändå flyttas inte mailen. Har testat med andra mappar med samma resultat.

    Någon som har tips på hur jag ska lösa det här? Ska testa att kopiera mailen till destinationen och sedan ta bort dom från inkorgen, men det är inte rätt lösning, vill hellre flytta dom.

Medlem sedan juni 20014 290 inlägg
#2

Pop3 supportar inte att ha mappar på servern.

Pop3 är gjort för att hämta mailet från servern och spara lokalt på datorn och sedan ta bort mailet från servern.

För att kunna göra det du vill så måste du använda imap protokollet.

Som det står under imap_mail_move:

http://php.net/manual/en/function.imap-mail-move.php skrev:

An IMAP stream returned by imap_open().

Medlem sedan feb. 20034 441 inlägg
#3

Jag är så jävla dum, visste ju om det och ändå gjorde jag fel... Nu flyttas mailen till rätt mapp, vilket är bra, men dom ligger även kvar i ursprungsmappen.

Måste jag radera dom manuellt vid flytten? Verkar ju sjukt, för man använder ju flytta för att just flytta ett objekt.

Medlem sedan feb. 20034 441 inlägg
#4

Ahh..

After using imap_mail_move, imap_mail_copy or imap_delete it is necesary to call imap_expunge() function.

Ska prova det!

/ Japp, var det som saknades.

263 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)