За последние 24 часа нас посетили 17070 программистов и 1834 робота. Сейчас ищут 1612 программистов ...

OpenSource код, могет кому нить поможет.

Тема в разделе "Работа с почтой", создана пользователем Goryn, 19 ноя 2006.

  1. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    PHP:
    1. <?PHP
    2. #  Usage Example:
    3. #    $mulmail = new multipartmail("krisd@work.net", "destination@anywhere.com", "Some Subject");
    4. #    $cid = $mulmail->addattachment(file, "octet-stream");
    5. #    $mulmail->addmessage("Message");
    6. #    $mulmail->sendmail();
    7.  
    8.    class multipartmail{
    9.      var $header;
    10.      var $parts;
    11.      var $message;
    12.      var $subject;
    13.      var $to_address;
    14.      var $boundary;
    15.  
    16.      function multipartmail($dest, $src, $sub){
    17.          $this->to_address = $dest;
    18.          $this->subject = $sub;
    19.          $this->parts = array("");
    20.          $this->boundary = "--" . md5(uniqid(time()));
    21.          $this->header = "From: $src\r\n" .
    22.                          "MIME-Version: 1.0\r\n" .
    23.                          "Content-Type: multipart/mixed; " .
    24.                          " boundary=\"" . $this->boundary . "\"\r\n" .
    25.                          "X-Mailer: PHP/" . phpversion();
    26.      }
    27.  
    28.      function addmessage($msg = "", $ctype = "text/plain"){
    29.          $this->parts[0] = "Content-Type: $ctype; charset=windows-1251\r\n" .
    30.                            "Content-Transfer-Encoding: 7bit\r\n" .
    31.                            "\n" .$msg."\r\n";
    32.      }
    33.  
    34.      function addattachment($file, $ctype){
    35.          $fname = substr(strrchr($file, "\\"), 1);
    36.          $data = file_get_contents($file);
    37.          $i = count($this->parts);
    38.          $content_id = "part$i." . sprintf("%09d", crc32($fname)) . strrchr($this->to_address, "@");
    39.          $this->parts[$i] = "Content-Type: $ctype; name=\"$fname\"\r\n" .
    40.                            "Content-Transfer-Encoding: base64\r\n" .
    41.                            "Content-ID: <$content_id>\r\n" .
    42.                            "Content-Disposition: attachment; " .
    43.                            " filename=\"$fname\"\r\n" .
    44.                            "\n" .
    45.                            chunk_split( base64_encode($data), 68, "\n");
    46.          return $content_id;
    47.      }
    48.  
    49.      function buildmessage(){
    50.          $this->message = "This is a multipart message in mime format.\n";
    51.          $cnt = count($this->parts);
    52.          for($i=0; $i<$cnt; $i++){
    53.            $this->message .= "--" . $this->boundary . "\n" .
    54.                              $this->parts[$i];
    55.          }
    56.      }
    57.  
    58.      /* to get the message body as a string */
    59.      function getmessage(){
    60.          $this->buildmessage();
    61.          return $this->message;
    62.      }
    63.  
    64.      function sendmail(){
    65.          $this->buildmessage();
    66.          mail($this->to_address, $this->subject, $this->message, $this->header);
    67.      }
    68.    }
    69.  
    70. ?>