Как служить многослойным / сходным материалам в PHP?

Я рекомендовал бы Простой HTML PHP Синтаксический анализатор DOM после очистки HTML от страницы. Это поддерживает недопустимый HTML и обеспечивает очень простой способ обработать элементы HTML.

6
задан mshsayem 5 December 2009 в 04:21
поделиться

3 ответа

Вот это [сработало для меня] (Нет, я не использовал PHPMailer; может быть, это полезно, но я не смог заставить его работать):

// Two contents : application/xhtml+xml and image/gif
// Here we go
<?php
    $boundary = "ghorar#deem";
    $im_len = filesize("path/to/abc.gif")
    header("Content-Type:multipart/related; boundary=\"$boundary\"; type=\"application/xhtml+xml\"");
    $xml_cnt = <<<EOD
<media xmlns="http://www.sth.com/sth.xsd">
    <objectURI>cid:112509abc@syz.com</objectURI>
    <size>$im_len</size>
    <type>image/gif</type>
    <name>abcxyz</name>     
    <description>blah blah</description>
</media>
EOD;
    $xml_len = strlen($xml_cnt);        
    $im = imagecreatefromgif("path/to/abc.gif");
    $to_send = "This is a multi-part message example in MIME format

--$boundary
Content-Type: application/xhtml+xml;
Content-ID: <e4509xml@asd.com>
Content-Length: $xml_len

$xml_cnt
--$boundary
Content-Type: image/gif;
Content-ID: <112509abc@syz.com>
Content-Length: $im_Len
Content-Transfer-Encoding: binary

";
    echo $to_send;
    imagegif($im);
    echo "\r\n--$boundary--";
    imagedestroy($im);
?>

Вы можете загрузить xml также из файла. Но обратите внимание, что если ваш xml ссылается на изображение (как я сделал здесь), вам необходимо указать его с его Content-ID. Также обратите внимание на символы '<' '>' в поле Content-ID изображения (после границы) и обозначение 'cid:' в том месте, где оно упоминается. У меня это сработало. Спасибо Карлосу Лиме за то, что он уделил мне время.

3
ответ дан 16 December 2019 в 21:41
поделиться

Боюсь, вы не можете использовать те цели, которые вам нужны.

Если вы хотите сделать это для обслуживания веб-страниц, насколько я могу судить, браузеры не будут работать с такими ответами MIME для отображения страниц.

Если вам нужен пример того, как работает это сообщение, отправьте себе электронное письмо с вложением и в своем почтовом клиенте (не в веб-почте) перейдите к опции «Просмотр источника» в теле письма.

Вы ' Если это то, что вы хотите, проверьте этот пример на их веб-сайте.

Изменить:

Вы можете использовать PHPMailer для создания сообщения, тогда вы просто используете результат вместо фактической отправки электронной почты.

Попробуйте что-то вроде этого:

** Это непроверенный код, только для начала **

<?php
  require_once('../class.phpmailer.php');
  $mail = new PHPMailer(true); // the true param means it will throw exceptions on     errors, which we need to catch

  try {
    $mail->MsgHTML(file_get_contents('contents.html'));
    $mail->AddAttachment('images/phpmailer.gif');      // attachment
    $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
    $mime_message = $mail->CreateBody();
    echo $mime_message;
  } catch (phpmailerException $e) {
    echo $e->errorMessage(); //Pretty error messages from PHPMailer
  } catch (Exception $e) {
    echo $e->getMessage(); //Boring error messages from anything else!
  }
?>
5
ответ дан 16 December 2019 в 21:41
поделиться

Я пытался добиться того же.

Похоже, что MSIE - единственный браузер, который в настоящее время поддерживает многочастные / связанные файлы изначально (Opera может иметь некоторую поддержку, но я; не играл с ним), однако при загрузке таких файлов кажется, что он полностью игнорирует заголовки HTTP, касающиеся типа mime и других вещей (таких как информация кеширования, расположение и т. д.). Действительно, MSIE откроет файл только в том случае, если URL-адрес имеет расширение файла .mht (т. Е. Нарушает большинство правил HTTP).

Кроме того, MSIE с радостью загрузит все, что содержит встроенный составной / связанный файл (при условии, что он закодирован как простой текст), без визуализации данных, в которых содержится вложение. Похоже, функциональность для обработки этих файлов - это быстрый способ просмотра файлов

. Если вы перенастроите свой веб-сервер для анализа URL-адресов .mht с помощью php (или используйте mod_rewrite для переназначения URL-адреса), вы, вероятно, обнаружите, что это может сработать (хотя я бы не очень надеялся, что он будет работать с добавленной строкой запроса). Но ожидайте проблем, если вы генерируете динамический контент (он не истечет из кеша / обновления, когда вы ожидаете).

Короче говоря, это не сработает.

t истекает из кеша / обновления, когда вы ожидаете).

Короче говоря, это не сработает.

t истекает из кеша / обновления, когда вы ожидаете).

Короче говоря, это не сработает.

0
ответ дан 16 December 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: