<?php
$hostname="localhost";
$username="root";
$password="";
if(!mysql_connect($hostname,$username,$password))
{
exit;
}
mysql_select_db("mail");
function pr($str1,$str2)
{
if(eregi("koi8-r",$str2)) $to="k";
if(eregi("iso8859-5",$str2)) $to="i";
if(eregi("x-cp866",$str2)) $to="a";
if(eregi("x-mac-cyrillic",$str2)) $to="m";
if(@$to!="") $str1=convert_cyr_string ($str1, $to, "w");
return $str1;
}
function pere($str)
{
$str=explode(" ", $str);
$i=0;
while($i!=count($str))
{
$vot=explode("?", $str[$i]);
if(@$vot[2]=="Q"):
{
$vot[3]=quoted_printable_decode($vot[3]);
}
elseif(@$vot[2]=="B"):
{
$vot[3]=base64_decode($vot[3]);
}
else:
{
$vot[3]=$str[$i];
}
endif;
$vot[3]=pr($vot[3],$vot[1]);
$str[$i]=$vot[3];
$i++;
}
$str=implode(" ", $str);
return $str;
}
function timepr($st)
{
$st=explode(" ", $st);
switch ($st[2])
{
case Jan:
$st[2]=01;
break;
case Feb:
$st[2]=02;
break;
case Mar:
$st[2]=03;
break;
case Apr:
$st[2]=04;
break;
case May:
$st[2]=05;
break;
case Jun:
$st[2]=06;
break;
case Jul:
$st[2]=07;
break;
case Aug:
$st[2]=08;
break;
case Sep:
$st[2]=09;
break;
case Oct:
$st[2]=10;
break;
case Nov:
$st[2]=11;
break;
case Dec:
$st[2]=12;
break;
}
$st=$st[3]."-".$st[2]."-".$st[1]." ".$st[4];
return $st;
}
$que=mysql_query("SELECT * FROM info");
while($dan=mysql_fetch_array($que))
{ // $dan dannye.
$login=$dan['ik14'];
$pass=$dan['ik15'];
$mbox = imap_open ("{pop3-9.1gb.ru}INBOX", $login, $pass,CL_EXPUNGE);
$pis=imap_headers($mbox);
$i=0;
while($pis[$i])
{
$i++;
$tt=imap_fetch_overview($mbox, $i);
$vr="{$tt[0]->date}";
$vr=timepr($vr); // $vr vremya
$sub="{$tt[0]->subject}";
if($sub=="")
{
$sub="No subject";
}
else
{
$sub=pere($sub); // $sub tema
}
$from="{$tt[0]->from}";
$from=trim($from);
if(ereg(".*>$",$from))
{
ereg("^(.+)<(.+)>$",$from,$fr);
$from1=pere($fr[1]);
$from2=$fr[2];
}
else
{
$from1=$from; // $from1 Fakticheskij adress
$from2=""; // $from2 Zamena adr
}
$size="{$tt[0]->size}"; // $size ves pisma
$body=imap_body($mbox, $i);
$te=imap_fetchstructure($mbox, $i);
$si="{$te->[parameters]->[0]->attribute}";
$si1="{$te->[parameters]->[0]->value}";
if(eregi("BOUNDARY", $si))
{
$val="--".$si1;
$body=explode($val,$body);
array_pop($body);
array_shift($body);
$x=0;
$body1="";
$fail="";
$tekst="";
$put=rand(111111111,999999999);
mkdir("mail/$put", 0700);
// $tekst Tekst pisma!
// $fail=put`/imya = razmer, put`/imya = razmer,
while($body[$x])
{
$sej=explode("\r\n\r\n",$body[$x],2);
if(eregi("boundary=", $sej[0])):
{
eregi('boundary="(.[^"]+)',$sej[0],$bou);
$body1=$body[$x];
}
elseif(eregi("filename=", $sej[0])):
{
eregi('filename="(.[^"]+)',$sej[0],$arrae1);
eregi('Content-Transfer-Encoding: ([a-z0-9-]+)',$sej[0],$arrae2);
$arrae1=pere(trim($arrae1[1]));
$arrae2=trim($arrae2[1]);
if(eregi("base64",$arrae2)):
{
$sej[1]=base64_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
elseif(eregi("quoted-printable",$arrae2)):
{
$sej[1]=quoted_printable_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
endif;
$fo=fopen("mail/$put/$arrae1","wb");
$rasd=fputs($fo,$sej[1]);
fclose($fo);
if($rasd!="-1")
{
$fail.="mail/$put/$arrae\"$rasd,";
}
}
elseif(eregi("Content-ID:", $sej[0])):
{
eregi('name="(.[^"]+)',$sej[0],$arrae1);
eregi('Content-Transfer-Encoding: ([a-z0-9-]+)',$sej[0],$arrae2);
eregi('Content-ID: <(.[^>]+)',$sej[0],$arrae3);
$arrae1=pere(trim($arrae1[1]));
$arrae2=trim($arrae2[1]);
if(eregi("base64",$arrae2)):
{
$sej[1]=base64_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
elseif(eregi("quoted-printable",$arrae2)):
{
$sej[1]=quoted_printable_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
endif;
$fo=fopen("mail/$put/$arrae1","wb");
$rasd=fputs($fo,$sej[1]);
fclose($fo);
if($rasd!="-1")
{
$fail.="mail/$put/$arrae1\"$rasd,";
}
$adsaa[chem]="mail/$put/$arrae1";
$adsaa[chto]=$arrae3[1];
$zamesh[]=$adsaa;
}
else:
{
if(eregi("BASE64",$sej[0])): $sej[1]=base64_decode($sej[1]);
elseif(eregi("QUOTED-PRINTABLE",$sej[0])): $sej[1]=quoted_printable_decode($sej[1]);
endif;
if(eregi("koi8-r",$sej[0])): $char="koi8-r";
elseif(eregi("iso8859-5",$sej[0])): $char="iso8859-5";
elseif(eregi("x-cp866",$sej[0])): $char="x-cp866";
elseif(eregi("x-mac-cyrillic",$sej[0])): $char="x-mac-cyrillic";
else: $char="windows-1251";
endif;
$sej[1]=pr($sej[1],$char);
$sej[1]=str_replace("$char", "windows-1251", $sej[1]);
$tekst.=$sej[1];
}
endif;
$x++;
}
////////////////////////////////////////////////////// razbor 2!
if($body1!="")
{
$val="--"."$bou[1]";
$body1=explode($val,$body1);
$x=0;
$body2="";
while($body1[$x])
{
$sej=explode("\r\n\r\n",$body1[$x],2);
if(eregi("boundary=", $sej[0])):
{
eregi('boundary="(.[^"]+)',$sej[0],$bou);
$body2=$body1[$x];
}
elseif(eregi("filename=", $sej[0])):
{
eregi('filename="(.[^"]+)',$sej[0],$arrae1);
eregi('Content-Transfer-Encoding: ([a-z0-9-]+)',$sej[0],$arrae2);
$arrae1=pere(trim($arrae1[1]));
$arrae2=trim($arrae2[1]);
if(eregi("base64",$arrae2)):
{
$sej[1]=base64_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
elseif(eregi("quoted-printable",$arrae2)):
{
$sej[1]=quoted_printable_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
endif;
$fo=fopen("mail/$put/$arrae1","wb");
$rasd=fputs($fo,$sej[1]);
fclose($fo);
if($rasd!="-1")
{
$fail.="mail/$put/$arrae1\"$rasd,";
}
}
elseif(eregi("Content-ID:", $sej[0])):
{
eregi('name="(.[^"]+)',$sej[0],$arrae1);
eregi('Content-Transfer-Encoding: ([a-z0-9-]+)',$sej[0],$arrae2);
eregi('Content-ID: <(.[^>]+)',$sej[0],$arrae3);
$arrae1=pere(trim($arrae1[1]));
$arrae2=trim($arrae2[1]);
if(eregi("base64",$arrae2)):
{
$sej[1]=base64_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
elseif(eregi("quoted-printable",$arrae2)):
{
$sej[1]=quoted_printable_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
endif;
$fo=fopen("mail/$put/$arrae1","wb");
$rasd=fputs($fo,$sej[1]);
fclose($fo);
if($rasd!="-1")
{
$fail.="mail/$put/$arrae1\"$rasd,";
}
$adsaa[chem]="mail/$put/$arrae1";
$adsaa[chto]=$arrae3[1];
$zamesh[]=$adsaa;
}
else:
{
if(eregi("BASE64",$sej[0])): $sej[1]=base64_decode($sej[1]);
elseif(eregi("QUOTED-PRINTABLE",$sej[0])): $sej[1]=quoted_printable_decode($sej[1]);
endif;
if(eregi("koi8-r",$sej[0])): $char="koi8-r";
elseif(eregi("iso8859-5",$sej[0])): $char="iso8859-5";
elseif(eregi("x-cp866",$sej[0])): $char="x-cp866";
elseif(eregi("x-mac-cyrillic",$sej[0])): $char="x-mac-cyrillic";
else: $char="windows-1251";
endif;
$sej[1]=pr($sej[1],$char);
$sej[1]=str_replace("$char", "windows-1251", $sej[1]);
$tekst.=$sej[1];
}
endif;
$x++;
}
}
if($body2!="")
{
$val="--"."$bou[1]";
$body2=explode($val,$body2);
$x=0;
$body3="";
while($body1[$x])
{
$sej=explode("\r\n\r\n",$body2[$x],2);
if(eregi("boundary=", $sej[0])):
{
eregi('boundary="(.[^"]+)',$sej[0],$bou);
$body3=$body2[$x];
}
elseif(eregi("filename=", $sej[0])):
{
eregi('filename="(.[^"]+)',$sej[0],$arrae1);
eregi('Content-Transfer-Encoding: ([a-z0-9-]+)',$sej[0],$arrae2);
$arrae1=pere(trim($arrae1[1]));
$arrae2=trim($arrae2[1]);
if(eregi("base64",$arrae2)):
{
$sej[1]=base64_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
elseif(eregi("quoted-printable",$arrae2)):
{
$sej[1]=quoted_printable_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
endif;
$fo=fopen("mail/$put/$arrae1","wb");
$rasd=fputs($fo,$sej[1]);
fclose($fo);
if($rasd!="-1")
{
$fail.="mail/$put/$arrae1\"$rasd,";
}
}
elseif(eregi("Content-ID:", $sej[0])):
{
eregi('name="(.[^"]+)',$sej[0],$arrae1);
eregi('Content-Transfer-Encoding: ([a-z0-9-]+)',$sej[0],$arrae2);
eregi('Content-ID: <(.[^>]+)',$sej[0],$arrae3);
$arrae1=pere(trim($arrae1[1]));
$arrae2=trim($arrae2[1]);
if(eregi("base64",$arrae2)):
{
$sej[1]=base64_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
elseif(eregi("quoted-printable",$arrae2)):
{
$sej[1]=quoted_printable_decode(str_replace ("\r", "", str_replace ("\n", "",$sej[1])));
}
endif;
$fo=fopen("mail/$put/$arrae1","wb");
$rasd=fputs($fo,$sej[1]);
fclose($fo);
if($rasd!="-1")
{
$fail.="mail/$put/$arrae1\"$rasd,";
}
$adsaa[chem]="mail/$put/$arrae1";
$adsaa[chto]=$arrae3[1];
$zamesh[]=$adsaa;
}
else:
{
if(eregi("BASE64",$sej[0])): $sej[1]=base64_decode($sej[1]);
elseif(eregi("QUOTED-PRINTABLE",$sej[0])): $sej[1]=quoted_printable_decode($sej[1]);
endif;
if(eregi("koi8-r",$sej[0])): $char="koi8-r";
elseif(eregi("iso8859-5",$sej[0])): $char="iso8859-5";
elseif(eregi("x-cp866",$sej[0])): $char="x-cp866";
elseif(eregi("x-mac-cyrillic",$sej[0])): $char="x-mac-cyrillic";
else: $char="windows-1251";
endif;
$sej[1]=pr($sej[1],$char);
$sej[1]=str_replace("$char", "windows-1251", $sej[1]);
$tekst.=$sej[1];
}
endif;
$x++;
}
}
if($body3!="")
{
$tekst.=$body3;
}
$p=0;
while($zamesh[$p]!="")
{
$chto="cid:{$zamesh[$p][chto]}";
$chem="{$zamesh[$p][chem]}";
$tekst=str_replace($chto, $chem, $tekst);
$p++;
}
}
else
{
$body=pr($body,$si1);
if($body=="") $tekst="No message."; else $tekst=$body;
}
//////////////////////////////////////////////////// dobavlenie v bazu
if($dan['ik6']==1)
{
if($dan['ik13']==1)
$kud=0;
else
$kud=4;
}
else $kud=0;
$sub=substr(trim(addslashes($sub)), 0,1000 );
$from1=substr(trim(addslashes($from1)), 0,1000 );
$from2=substr(trim(addslashes($from2)), 0,1000 );
$tekst=substr(trim(addslashes($tekst)), 0,1000 );
$fail=substr(trim(addslashes($fail)), 0,1000 );
$ik=substr(trim(addslashes($dan['ik11'])), 0,1000 );
$body=substr(trim(addslashes($dan['$body'])), 0,1000 );
mysql_query("UPDATE info SET ik16=ik16+'$size' where ik11='$ik';");
mysql_query("INSERT INTO mail (ma1,ma2,ma3,ma4,ma5,ma6,ma7,ma8,ma9,ma10,ma11) values ('$kud','0','$vr','$sub','$from1','$from2','$tekst','$size','$fail','$ik','$body');");
}
imap_close($mbox);
}
?>