The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"php attach"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"php attach"
Сообщение от aleks_sss emailИскать по авторуВ закладки(ok) on 12-Авг-04, 23:09  (MSK)
Подскажите решение. Установлена пхп-нюка,php,apache. Стояла проблема создания рассылки -- использовал модуль нюки newsletter.php. Т.к. сайт сделан на koi8-u (ukrainian), то возникла проблема с рассылкой в формате КОИ8-У - у одних не читается, у других укр. буквы пропадают, к тому же, если использовать Content-type: text/html -- то вообще глюки. Пытался использовать конструкцию типа:

================ cut ==============================
        $xheaders = "From: " . $sitename . " <" . $adminmail . ">\n";
        $xheaders .= "X-Sender: <" . $adminmail . ">\n";
        $xheaders .= "X-Mailer: PHP\n"; // mailer
        $xheaders .= "X-Priority: 3\n"; // Urgent message!
$xheaders .= "MIME-Version: 1.0\r\n";
        if ($send_html_messages == "yes") {
$xheaders .= "Content-Type: text/html; charset=\"windows-1251\"\n"; // Mime type
$xheaders .= "Content-Transfer-Encoding: 8bit\n";

# Koi->Win converting
$adminmail = convert_cyr_string($adminmail, "k", "w");
$subject = convert_cyr_string($subject, "k", "w");
$content = convert_cyr_string($content, "k", "w");
$xheaders = convert_cyr_string($xheaders, "k", "w");
mail("$user_email","$subject","$content",$xheaders);

================ cut ==============================

Вместо windows-1251 подставлял iso -- выходила ерунда, типа вопросов, вводил 8бит такая же.
В итоге с целью унифицировать распознавания кодировок (может кто подскажет другой совет), решил рассылку помещать в аттач, а там уж пусть разбираются сами.

2 вопроса и 2 решения:
1. помещать набранный текст в аттач и отправлять его (формат HTML, RTF, PDF, просто текст не годится, т.к. присутствуют ссылки)
2. прикреплять внешний файл

Подскажите, как реализовать эти 2 решения. Для первого случая, необходимо загнать переменную $content в аттач в определенном формате (кажется ПХП это может, но как?) и прикрепить оный к письму. Во втором, необходимо прикрепить, например RTF-файл к письму. Спасибо заранее.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "php attach"
Сообщение от zenon emailИскать по авторуВ закладки(??) on 13-Авг-04, 10:31  (MSK)
С помощью этого класса можно отправлять письма в формате html с вложенными файлами. Поддерживаются кодировки win-1251 и koi8-r.

=========================cut==================================
class html_mime_mail {
  var $headers;
  var $multipart;
  var $mime;
  var $html;
  var $parts = array();

  function html_mime_mail($headers="") {
    $this->headers=$headers;
  }

  function add_html($html="") {
    $this->html.=$html;
  }

  function build_html($orig_boundary,$kod) {
    $this->multipart.="--$orig_boundary\n";
    if ($kod=='w' || $kod=='win' || $kod=='windows-1251') $kod='windows-1251';
    else $kod='koi8-u';
    $this->multipart.="Content-Type: text/html; charset=$kod\n";
    $this->multipart.="Content-Transfer-Encoding: Quot-Printed\n\n";
    $this->multipart.="$this->html\n\n";
  }


  function add_attachment($path="", $name = "", $c_type="application/octet-stream") {
    if (!file_exists($path.$name)) {
      print "File $path.$name dosn't exist.";
      return;
    }
    $fp=fopen($path.$name,"r");
    if (!$fp) {
      print "File $path.$name coudn't be read.";
      return;
    }
    $file=fread($fp, filesize($path.$name));
    fclose($fp);
    $this->parts[]=array("body"=>$file, "name"=>$name,"c_type"=>$c_type);
  }

  function build_part($i) {
    $message_part="";
    $message_part.="Content-Type: ".$this->parts[$i]["c_type"];
    if ($this->parts[$i]["name"]!="")
       $message_part.="; name = \"".$this->parts[$i]["name"]."\"\n";
    else
       $message_part.="\n";
    $message_part.="Content-Transfer-Encoding: base64\n";
    $message_part.="Content-Disposition: attachment; filename = \"".
       $this->parts[$i]["name"]."\"\n\n";
    $message_part.=chunk_split(base64_encode($this->parts[$i]["body"]))."\n";
    return $message_part;
  }


  function build_message($kod) {
    $boundary="=_".md5(uniqid(time()));
    $this->headers.="MIME-Version: 1.0\n";
    $this->headers.="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
    $this->multipart="";
    $this->multipart.="This is a MIME encoded message.\n\n";
    $this->build_html($boundary,$kod);
    for ($i=(count($this->parts)-1); $i>=0; $i--)
      $this->multipart.="--$boundary\n".$this->build_part($i);
    $this->mime = "$this->multipart--$boundary--\n";
  }


  function send($server, $to, $from, $subject="", $headers="") {
    $headers="From: $from\nX-Mailer: Zveno\n$headers";
    $res=mail($to, $subject, "", $this->headers.$headers.$this->mime);
    return $res;
  }
}

=========================cut==================================

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру