Zdravím všechny programátory. Potřebuji pomoc se zkouškou.
Zadání:
z PHP skriptu se připojit na pop3 účet (pouzit fci pro praci se soketem fsockopen, nikoliv IMAP funkce)
stáhnout seznam zpráv, stáhnout několik zpráv, zobrazit jejich náležitosti (velikost,UID cislo) a obsah, barevně rozlišit hlavičky a tělo.
na netu sem našel něco takového
<?php
function pop3_open($server, $port)
{
global $POP3_GLOBAL_STATUS;
$pop3 = fsockopen($server, $port);
if ($pop3 <= 0) return 0;
$line = fgets($pop3, 1024);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] = substr($line, 0, 1);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] <> "+") return 0;
return $pop3;
}
function pop3_user($pop3, $user)
{
global $POP3_GLOBAL_STATUS;
fputs($pop3, "USER $user\r\n");
$line = fgets($pop3, 1024);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] = substr($line, 0, 1);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] <> "+") return 0;
return 1;
}
function pop3_pass($pop3, $pass)
{
global $POP3_GLOBAL_STATUS;
fputs($pop3, "PASS $pass\r\n");
$line = fgets($pop3, 1024);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] = substr($line, 0, 1);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] <> "+") return 0;
return 1;
}
function pop3_stat($pop3)
{
global $POP3_GLOBAL_STATUS;
fputs($pop3, "STAT\r\n");
$line = fgets($pop3, 1024);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] = substr($line, 0, 1);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] <> "+") return 0;
if (!eregi("+OK (.*) (.*)", $line, $regs))
return 0;
return $regs[1];
}
function pop3_list($pop3)
{
global $POP3_GLOBAL_STATUS;
fputs($pop3, "LIST\r\n");
$line = fgets($pop3, 1024);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] = substr($line, 0, 1);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] <> "+") return 0;
$i = 0;
while (substr($line = fgets($pop3, 1024), 0, 1) <> ".")
{
$articles[$i] = $line;
$i++;
}
$articles["count"] = $i;
return $articles;
}
function pop3_retr($pop3, $nr)
{
global $POP3_GLOBAL_STATUS;
fputs($pop3, "RETR $nr\r\n");
$line = fgets($pop3, 1024);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] = substr($line, 0, 1);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] <> "+") return 0;
while (substr($line = fgets($pop3, 1024), 0, 1) <> ".")
{
$data[$i] = $line;
$i++;
}
$data["count"] = $i;
return $data;
}
function pop3_quit($pop3)
{
global $POP3_GLOBAL_STATUS;
fputs($pop3, "QUIT\r\n");
$line = fgets($pop3, 1024);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] = substr($line, 0, 1);
$POP3_GLOBAL_STATUS[$pop3]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($POP3_GLOBAL_STATUS[$pop3]["LASTRESULT"] <> "+") return 0;
return 1;
}
$pop3 = pop3_open("pop3.com", "110");
if (!$pop3) {
printf("[ERROR] Failed to connect to localhost<BR>\n");
return 0;
}
if (!pop3_user($pop3, "user@mail")) {
printf("[ERROR] Username failed!<BR>\n");
return 0;
}
if (!pop3_pass($pop3, "heslo")) {
printf("[ERROR] PASS failed!<BR>\n");
return 0;
}
$articles = pop3_list($pop3);
if (!$articles) {
printf("[ERROR] LIST failed!<BR>\n");
return 0;
}
for ($i = 1; $i < $articles ["count"] + 1; $i++)
{
printf("i=$i<BR>\n");
$data = pop3_retr($pop3,$i);
if (!$data) {
printf("data goes wrong on '$i'<BR>\n");
return 0;
}
for ($j = 0; $j < $data["count"]; $j++)
{
printf("$data[$j]<BR>\n");
}
}
?>
a potřeboval bych dodělat
- stáhnout a zobrazit seznam zpráv
- a u zpráv které se mi zobrazili, zobrazit velikost a barevně rozlišit hlavičky a tělo
Opravdu to chváta a proto moc prosím všechny co můžou o pomoc.