Napisalem sobie klase do odczytywania i wysylania poczty email przy uzyciu protokolu IMAP. Mam jednak problem z funkcja wysylajaca poczte.
<?php function send_mail($od, $od_addr, $do, $cc = '', $bcc = '', $temat, $tresc, $reply = '', $replyname = '', $priorytet = 3,$zapisz = false, $zalacz = false, $wyslij = true) { $envelope['from'] = \"$od <$od_addr>\"; $envelope['return-path'] = $od_addr; $envelope['subject'] = $temat; if($cc != '') $envelope['cc'] = $cc; $envelope[\"custom_headers\"] = array(\"X-Priority: \".$priorytet); if($bcc != '') if($reply != '') { if($replyname == '') else } $part1[\"type\"] = TYPEMULTIPART; $part1[\"subtype\"] = \"mixed\"; $typy_mime = array(TYPETEXT, TYPEMULTIPART, TYPEMESSAGE, TYPEAPPLICATION, TYPEAUDIO, TYPEIMAGE, TYPEVIDEO, TYPEOTHER); { for($i = 0; $i < $ile_zal; $i++) { $filename = $attach_dir.$zalacz[$i]; $mime = mime_content_type($filename); switch($type) { case 'text': $type = TYPETEXT; break; case 'multipart': $type = TYPEMULTIPART; break; case 'message': $type = TYPEMESSAGE; break; case 'application': $type = TYPEAPPLICATION; break; case 'audio': $type = TYPEAUDIO; break; case 'image': $type = TYPEIMAGE; break; case 'video': $type = TYPEVIDEO; break; case 'other': $type = TYPEOTHER; break; } ${\"part2\".$i}[\"type\"] = $type; ${\"part2\".$i}[\"subtype\"] = $subtype; ${\"part2\".$i}[\"encoding\"] = ENCBINARY; ${\"part2\".$i}[\"contents.data\"] = $contents; ${\"part2\".$i}[\"disposition.type\"] = \"attachment\"; ${\"part2\".$i}[\"disposition\"] = array(\"filename\" => $fname); delete_file($zalacz[$i]); } } else $zalacz = false; $part3[\"type\"] = TYPETEXT; $part3[\"subtype\"] = \"plain\"; $part3[\"charset\"] = \"iso-8859-2\"; $part3[\"description\"] = $temat; $part3[\"contents.data\"] = $tresc; if($zalacz) { $body[1] = $part1; $j = 2; for($i = 0; $i <$ile_zal; $i++) $body[$j++] = ${\"part2\".$i}; $body[$j] = $part3; } else $body[1] = $part3; if($zapisz) { $envelope['to'] = $do; if(!$wyslij) return imap_append($this->id, $this->mailserver.$email_draft, $mail2, \"Seen Draft\"); imap_append($this->id, $this->mailserver.$email_sent, $mail2, \"Seen\"); } if($wyslij) { return imap_mail($do, $temat, $t_body, $t_header); } } ?>
Otóż wysyla poczte idealnie, jednak w przypadku gdy chce zapisac dodatkowo list w skrzynce Wyslane pojawia sie problem, gdyz odczytujac nastepnie zapisana wiadomosc nie mozna odczytac z niej zalacznikow. Najdziwniejsze jest to ze wiadomosc wysylana i zapisywana to jest praktycznie ta sama wiadomosc, ktora jest przysylana, odbierana i zalaczniki widac bez najmniejszych problemow.
Czy ktos wie w czym moze tutaj byc problem.
Zamieszcze dodatkowo funkcje odczytujaca zalaczniki (calej klasy nie umieszczam bo jest za duza).
<?php function get_attachments($numer) { $strukt = $this->fetchstructure($numer); return false; if($czesci > 1) for($i = 0; $i < $czesci; $i++) { if($strukt->parts[$i]->type != TYPEMULTIPART) { $check = false; { $parametry = $strukt->parts[$i]->parameters; { if(isset($parametry[$j]->attribute) && ($parametry[$j]->attribute == \"name\" || $parametry[$j]->attribute == \"filename\")) { $check = true; } } } { $parametry = $strukt->parts[$i]->dparameters; { if(isset($parametry[$j]->attribute) && ($parametry[$j]->attribute == \"name\" || $parametry[$j]->attribute == \"filename\")) } } } } return $zalaczniki; } ?>