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()?
                                 
                                 
                               
               
                              
                                 
                                      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
                                 
                                 
                               
               
                              
                                 
                                      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.
                                 
                                 
                               
               
                              
                                 
                                      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ý^_^.