Oto czesc kodu ktora nie radzi sobie z wklejonymi zdjeciami:
if(isset($structure->parts))
{
foreach($structure->parts as $key => $value)
{
$enc=$structure->parts[$key]->encoding;
if($structure->parts[$key]->ifdparameters){
print_r($structure->parts);
$name = date("YmdHis") . "_" . $account;
$name.= "_" . $structure->parts[$key]-
>dparameters[0]->value;
$message = imap_fetchbody($imap,$mid,$key+1);
if ($enc == 0)
$message = imap_8bit($message);
if ($enc == 1)
$message = imap_8bit ($message);
if ($enc == 2)
$message = imap_binary ($message);
if ($enc == 3)
$message = imap_base64 ($message);
if ($enc == 4)
$message = quoted_printable_decode($message);
if ($enc == 5)
$message = $message;
$fp=fopen($path.$name,"w");
fwrite($fp,$message);
fclose($fp);
$ar[]=$path . $name;
}
if(isset($structure->parts[$key]->parts))
{
foreach($structure->parts[$key]->parts as $keyb =>
$valueb){
$enc=$structure->parts[$key]->parts[$keyb]-
>encoding;
if($structure->parts[$key]->parts[$keyb]->ifparameters){
$name=$structure->parts[$key]->parts[$keyb]->parameters[0]-
>value;
//echo $name;
$partnro = ($key+1).".".($keyb+1);
$message = imap_fetchbody($imap,$mid,
$partnro);
if ($enc == 0)
$message = imap_8bit($message);
if ($enc == 1)
$message = imap_8bit ($message);
if ($enc == 2)
$message = imap_binary ($message);
if ($enc == 3)
$message = imap_base64 ($message);
if ($enc == 4)
$message =
quoted_printable_decode($message);
if ($enc == 5)
$message = $message;
$fp=fopen($path.$name,"w");
fwrite($fp,$message);
fclose($fp);
$ar[]=$path . $name;
}
}
}
}
}
> Witajcie, walcze od kilku godzin ze skryptem do odbierania maili w php
> i mam juz tego dosc.
yhy, 1 kwietnia mamy...
> > $fp=fopen($path.$name,"w");
nadpisujesz sobie plik kolejną częścią emaila. Wymyśl unikalną nazwę dla
każdej części osobno.
--
Pozdrawiam
Lemat
> nadpisujesz sobie plik kolejną częścią emaila. Wymyśl unikalną nazwę dla
> każdej części osobno.
To szczegol. Juz poprawilem. W folderze w ktorym powinno mi zapisac
pliki pojawil sie plik o nazwie 20100401112309_2_us-ascii i nic
wiecej. A gdzie moj wklejony obrazek?
M.
tu lecisz po wszystkich częściach emaila?
foreach($structure->parts[$key]->parts as $keyb =>
$valueb){
no to tuż za { umieść echo "dupa "; i zobacz ile razy dupa została wypisana.
podobnie tuż obok tego fopen w środku tego foreacza - umieść echo $name; i
zobacz czy rzeczywiście masz wiele unikalnych nazw.
a tak na marginesie to nie sprawdzasz czy operacja fopen wykonała się
poprawnie.
--
Pozdrawiam
Lemat
> no to tuż za { umieść echo "dupa "; i zobacz ile razy dupa została wypisana.
> podobnie tuż obok tego fopen w środku tego foreacza - umieść echo $name; i
> zobacz czy rzeczywiście masz wiele unikalnych nazw.
Okay, cofnijmy sie o krok i zrobmy tak:
$structure = imap_fetchstructure($imap,$mid);
print_r($structure);
Oto wynik:
stdClass Object
(
[type] => 1
[encoding] => 0
[ifsubtype] => 1
[subtype] => ALTERNATIVE
[ifdescription] => 0
[ifid] => 0
[bytes] => 6123
[ifdisposition] => 0
[ifdparameters] => 0
[ifparameters] => 1
[parameters] => Array
(
[0] => stdClass Object
(
[attribute] => BOUNDARY
[value] => 0016364ee30885483204832f5a4f
)
)
[parts] => Array
(
[0] => stdClass Object
(
[type] => 0
[encoding] => 0
[ifsubtype] => 1
[subtype] => PLAIN
[ifdescription] => 0
[ifid] => 0
[lines] => 36
[bytes] => 1337
[ifdisposition] => 0
[ifdparameters] => 0
[ifparameters] => 1
[parameters] => Array
(
[0] => stdClass Object
(
[attribute] => CHARSET
[value] => ISO-8859-1
)
)
)
[1] => stdClass Object
(
[type] => 0
[encoding] => 4
[ifsubtype] => 1
[subtype] => HTML
[ifdescription] => 0
[ifid] => 0
[lines] => 67
[bytes] => 4544
[ifdisposition] => 0
[ifdparameters] => 0
[ifparameters] => 1
[parameters] => Array
(
[0] => stdClass Object
(
[attribute] => CHARSET
[value] => ISO-8859-1
)
)
)
)
)
Gdzie sie podzialy zdjecia?
>
> no to tuż za { umieść echo "dupa "; i zobacz ile razy dupa została wypisana.
>
sugeruje jednak "echo 'testtesttest'" albo coś innego w tym guście
debugowanie za pomocą "dupy" jest o tyle wygodne, że trudno się
spodziewać ze aplikacja wypluje z siebie taki ciąg znaków gdziekolwiek
indziej. Na minus trzeba jednak zaliczyć fakt że jeżeli ktoś się
przyzwyczai to trzeba się liczyć z faktem, że są szanse, że prędzej czy
później jakąś "dupę" zobaczy klient.
Zapomniany "testtesttest" to jednak IMHO nieco mniejszy powód do
zażenowania niż "dupa".
--
Piotr Siudak
siu...@xz.pl
To niewazne, tutaj sami amerykance.
M.
Jak znają jakiegoś Polaka (czyt. Ciebie) to na bank wiedzą co znaczy
"dupa" ;)
--
message[autor="PablO"]::after {
content:"Pozdrawiam";
}
Tak troche dwuznacznie to zrozumialem...
M.
Zdaje się, że potrafią sporo więcej
http://www.google.pl/codesearch/p?hl=pl#iCXnLOj7beI/arch/sparc64/mm/ultra.S&q=pierdol&sa=N&cd=1&ct=rc
;)
pozdrawiam,
Andreux
Ups, faktycznie mogłem to lepiej sformułować. W każdym razie chodziło mi
tylko o znajomość tłumaczenia tegoż słowa :)
Przyjmuje przeprosiny :)
W koncu sobie z tym poradzilem. Jednak zauwazylem ze w kazdym mailu
pojawia sie duzo smieci takich jak; pliki z zwartascia html wiadomosci
email. Aby wiec uniknac niepotrzebnego zapisywania ich na dysk
zastosowalem if z warunkiem:
if ((isset($structure->parts[$key]->parameters[0]->attribute)) &&
($structure->parts[$key]->parameters[0]->attribute == "NAME")){
Przykladowy obiekt ze wszystkimi danymi mozna znalezc w moim poscie
powyzej. A ponizej moja funkcja. Prosze o wskazowki, o czyms
zapomnialem?
function GetAttach($imap,$mid,$account) {
$path = "_attINCOMING/";
$inc = 0;
$structure = imap_fetchstructure($imap,$mid);
//print_r($structure);
$ar=array();
if(isset($structure->parts)){
foreach($structure->parts as $key => $value){
$enc=$structure->parts[$key]->encoding;
if($structure->parts[$key]->ifparameters){
if ((isset($structure->parts[$key]->parameters[0]->attribute)) &&
($structure->parts[$key]->parameters[0]->attribute == "NAME")){
$name = date("YmdHis") . "_" . $account;
$name.= "_" . $structure->parts[$key]->parameters[0]->value;
$message = imap_fetchbody($imap,$mid,$key+1);
if ($enc == 0)
$message = imap_8bit($message);
if ($enc == 1)
$message = imap_8bit ($message);
if ($enc == 2)
$message = imap_binary ($message);
if ($enc == 3)
$message = imap_base64 ($message);
if ($enc == 4)
$message = quoted_printable_decode($message);
if ($enc == 5)
$message = $message;
$fp=fopen($path.$name,"w");
fwrite($fp,$message);
fclose($fp);
$ar[$inc]['savepath']=$path . $name;
$inc++;
}
}
if(isset($structure->parts[$key]->parts))
{
// TA CZESC MA PODOBNO SLUZYC DO ZAPISYWANIA EMBEDDED ATTACHMENTS
foreach($structure->parts[$key]->parts as $keyb => $valueb)
{
$enc=$structure->parts[$key]->parts[$keyb]->encoding;
if($structure->parts[$key]->parts[$keyb]->ifparameters){
if ((isset($structure->parts[$key]->parts[$keyb]->parameters[0]-
>attribute)) && ($structure->parts[$key]->parts[$keyb]->parameters[0]-
>attribute == "NAME")){
$name = date("YmdHis") . "_" . $account;
$name.=$structure->parts[$key]->parts[$keyb]->parameters[0]-
>value;
$partnro = ($key+1).".".($keyb+1);
$message = imap_fetchbody($imap,$mid,$partnro);
if ($enc == 0)
$message = imap_8bit($message);
if ($enc == 1)
$message = imap_8bit ($message);
if ($enc == 2)
$message = imap_binary ($message);
if ($enc == 3)
$message = imap_base64 ($message);
if ($enc == 4)
$message = quoted_printable_decode($message);
if ($enc == 5)
$message = $message;
$fp=fopen($path.$name,"w");
fwrite($fp,$message);
fclose($fp);
if ($structure->parts[$key]->parts[$keyb]->id){
$ar[$inc]['id'] = substr($structure->parts[$key]-
>parts[$keyb]->id,1,-1);
$ar[$inc]['value'] = $structure->parts[$key]->parts[$keyb]-
>parameters[0]->value;
}
$ar[$inc]['savepath']=$path . $name;
$inc++;
}
}
}
}
}
}
return $ar;
}
Pozdro
M.