odeslání MIME dopisů

12 příspěvků

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Zdravím všechny, nevíte někdo jak by šlo obejít odesílání MIME dopisů zde na WZ? Fce imap_mail_compose() není povolená a při ručním sestavování hlavičky a těla jsem narazil na problém: Netuším jak ta fce generuje skupinu znaků v následujícím řádku v BOUNDARY (zřejmě slouží ke spojení více dílčích částí MIME): Content-Type: MULTIPART/mixed; BOUNDARY="000_0013_01C22600.7825E4C0" Na lokále jsem použil nějakou svou nesmyslnou skupinu znaků a po uložení textu z PHP skriptu (který mě na lokále generuje tu MIME zprávu) do textového souboru s příp. MSG se v e-mail klientovi normálně zobrazí i s přílohou. Pokud ale skript spusím na WZ tak dopis sice dojde, ale bez textu i přílohy. Neznáte někdo RFC specifikaci? Příp. dá se MIME sestavit i jinak než přes imap_mail_compose()?
  2. ??? Tak z toho jsem mimo:o))))
  3. A nesel by misto toho pouzit cizi SMTP server ? ... na tohle tema uz tu bylo nejedno vlakno :o) Radek
  4. vytvorit spravnou podobu MIME emailu neni vubec jednoduche. zkus k tomu pouzit nekterou z jichz hotovych trid - hledej ve starsich prispevcich. m.
  5. MIME trida: <? class mime_mail { var $parts; var $to; var $from; var $headers; var $subject; var $body; function mime_mail() { $this->parts = array(); $this->to = ""; $this->from = ""; $this->subject = ""; $this->body = ""; $this->headers = ""; } function add_attachment($message, $name = "", $ctype = "application/octet-stream") { $this->parts[] = array ( "ctype" => $ctype, "message" => $message, // "encode" => $encode, "name" => $name ); } function build_message($part) { $message = $part[ "message"]; $message = chunk_split(base64_encode($message)); $encoding = "base64"; return "Content-Type: ".$part[ "ctype"]. ($part[ "name"]? "; name = \"".$part[ "name"]. "\"" : ""). "\nContent-Transfer-Encoding: $encoding\n\n$message\n"; } function build_multipart() { $boundary = "b".md5(uniqid(time())); $multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary"; for($i = sizeof($this->parts)-1; $i >= 0; $i--) { $multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary"; } return $multipart.= "--\n"; } function get_mail($complete = true) { $mime = ""; if (!empty($this->from)) $mime .= "From: ".$this->from. "\n"; if (!empty($this->headers)) $mime .= $this->headers. "\n"; if ($complete) { if (!empty($this->to)) { $mime .= "To: $this->to\n"; } if (!empty($this->subject)) { $mime .= "Subject: $this->subject\n"; } } if (!empty($this->body)) $this->add_attachment($this->body, "", "text/plain"); $mime .= "MIME-Version: 1.0\n".$this->build_multipart(); return $mime; } function send() { $mime = $this->get_mail(false); mail($this->to, $this->subject, "", $mime); } }; ?> SMTP TRIDA: <?php class smtp_mail { var $fp = false; var $lastmsg = ""; function read_line() { $ret = false; $line = fgets($this->fp, 1024); if(ereg("^([0-9]+).(.*)$", $line, &$data)) { $recv_code = $data[1]; $recv_msg = $data[2]; $ret = array($recv_code, $recv_msg); } return $ret; } function dialogue($code, $cmd) { $ret = true; fwrite($this->fp, $cmd."\r\n"); $line = $this->read_line($this->fp); if($line == false) { $ret = false; $this->lastmsg = ""; } else { $this->lastmsg = "$line[0] $line[1]"; if($line[0] != $code) { $ret = false; } } return $ret; } function error_message() { echo "SMTP protocol failure (".$this->lastmsg.").<br>"; } function crlf_encode($data) { $data .= "\n"; $data = str_replace("\n", "\r\n", str_replace("\r", "", $data)); $data = str_replace("\n.\r\n", "\n. \r\n", $data); return $data; } function handle_e_mail($from, $to, $data) { $rcpts = explode(",", $to); $err = false; if(!$this->dialogue(250, "HELO phpclient") || !$this->dialogue(250, "MAIL FROM:$from")) { $err = true; } for($i = 0; !$err && $i < count($rcpts); $i++) { if(!$this->dialogue(250, "RCPT TO:$rcpts[$i]")) { $err = true; } } if($err || !$this->dialogue(354, "DATA") || !fwrite($this->fp, $data) || !$this->dialogue(250, ".") || !$this->dialogue(221, "QUIT")) { $err = true; } if($err) { $this->error_message(); } return !$err; } function connect($hostname) { $ret = false; $this->fp = fsockopen($hostname, 25); if($this->fp) { $ret = true; } return $ret; } function send_e_mail($hostname, $from, $to, $data, $crlf_encode = 0) { if(!$this->connect($hostname)) { echo "cannot open socket<br>\n"; return false; } $line = $this->read_line(); $ret = false; if($line && $line[0] == "220") { if($crlf_encode) { $data = $this->crlf_encode($data); } $ret = $this->handle_e-mail($from, $to, $data); } else { $this->error_message(); } fclose($this->fp); return $ret; } } ?> bye
  6. ku***! sorry, ale proc sakra ty kusy zdrojaku nedavate nekde do file a sem hodit jen link na stazeni??? toto ma temer nulovou informacni hodnotu - leda ze by jsi chtel spolehat, ze tam forum nic nezmenilo ;-) spatne se to prenasi, zneprehledni to celej thread atd... zrovna od Mastera bych to necekal :-) nebo se za tebe nekdo maskuje? :-) m.s.
  7. To víš martine, vono zase otevřít ftp klienta připojit se na web, zkopírovat to tam, zavřít a dám se odkaz je mnohem složitější než to sem přímo hodit, to víš, člověk je od přírody tvor líný^_^.
  8. >to víš, člověk je od přírody tvor líný^_^... ...me to povidej! ale jsou veci ktere lenost nelenost... od pocitace se take zvednu a dojdu na wc... :-) m.s.
  9. Já taky:-)
  10. :o)))))))))))))))))))))))))))))))
  11. Nikdo se nemaskuje :-) Jsem to ja aneb: Master ® Ale stjne tady na tento thread už nikdo nereagoval, tak jsem si řekl že to sem hodím narovinu :-) sorry all end message Master ®
  12. :-)))

← Zpět na všechna témata