помогите с прикреплением attache

Discussion in 'PHP' started by GAiN, 24 Oct 2012.

  1. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    Помогите пожалуйта, всё никак не могу сделать прикрепление файлов к письму к этому коду
     
    #1 GAiN, 24 Oct 2012
    Last edited: 29 Oct 2012
  2. 4upakabr0

    4upakabr0 Member

    Joined:
    14 May 2008
    Messages:
    124
    Likes Received:
    23
    Reputations:
    0
    Вот тебе функция
    Code:
    function KMail($to, $from, $subj, $text, $files = null, $isHTML = false){
     $boundary = "------------".strtoupper(md5(uniqid(rand())));
     $headers  = "From: ".$from."\r\n
                  X-Mailer: koz1024.net\r\n
                  MIME-Version: 1.0\r\n
                  Content-Type: multipart/alternative;boundary=\"$boundary\"\r\n\r\n
                 ";
     if (!$isHTML){
      $type = 'text/plain';
     }else{
      $type = 'text/html';
     }
       $body =  $boundary."\r\n\r\n
                Content-Type:".$type."; charset=utf-8\r\n
                Content-Transfer-Encoding: 8bit\r\n\r\n
                ".$text."\r\n\r\n";
     if ((is_array($files))&&(!empty($files))){
        foreach($files as $filename => $filecontent){
           $body .= $boundary."\r\n
                    Content-Type: application/octet-stream;name=\"".$filename."\"\r\n
                    Content-Transfer-Encoding:base64\r\n
                    Content-Disposition:attachment;filename=\"".$filename."\"\r\n\r\n
                    ".chunk_split(base64_encode($filecontent));
        }
     }
     return mail($to, $subj, $body, $headers);
    }
    юзать примерно так

    Code:
      $files = array('archive.zip' => file_get_contents('archive.zip'), 'myphoto.png' => file_get_contents('myfoto.png'));
      if (KMail('test@example.com', 'ivan@example.com', 'проба пера', 'Привет, высылаю файлы...', $files, false)){
       echo 'Mail Отправлен';
      }else{
       echo 'Произошла ошибка';
      }
    //или так
      $html = "(HTML код письма)";
      if (KMail('test@example.com', 'ivan@example.com', 'проба пера', $html, null, true)){
       echo 'Mail Отправлен';
      }else{
       echo 'Произошла ошибка';
      }
     
    1 person likes this.
  3. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    а по проще возможно аттачи сделать ?
    X-Mailer я скрипты смотрел, всё громоздкое очень
     
    #3 GAiN, 24 Oct 2012
    Last edited: 25 Oct 2012
  4. 4upakabr0

    4upakabr0 Member

    Joined:
    14 May 2008
    Messages:
    124
    Likes Received:
    23
    Reputations:
    0
    тебе нужно самостоятельно сформировать заголовки в соответствии с требованиями протокола SMTP и передать его функции mail() последним парметром.
    Вот тут доступно о формате заголовков
     
  5. Adio

    Adio Elder - Старейшина

    Joined:
    23 May 2005
    Messages:
    1,646
    Likes Received:
    147
    Reputations:
    18
    ТУт тебе придеться уделить время, и просто сделать не получиться, пока не начитаешься о заголовках и тестировании этого всего дела на локал хосте, я помню в свое время намучался с этим :), но зато потом рулил как хотел, когда понимал как все работает. Так же можеш поискать инфу на англ типа simple attach via php mail or xmail function что то в этом роде
     
    1 person likes this.