PHP ile ilgili / çok parçalı içerik sunmak nasıl?

3 Cevap php

3 Cevap

İşte (Hayır, ben PHPMailer kullanılan etmedi; yararlıdır olabilir, ama çalışma gelemedi) [benim için çalıştı] olduğunu:

// 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);
?>

Ayrıca dosyadan xml yükleyebilirsiniz. Fakat, (Ben burada yaptığımız gibi) xml görüntü anlamına gelir eğer onun Content-ID ile bu başvurmak gerekir unutmayın. Ayrıca, dikkat '<' Gösterimine denir yerde: (sınırından sonra) görüntünün Content-ID alan ve 'Cid' in '>' karakterleri. Bu benim için çalıştı. Benim için vakit geçirmek için Carlos Lima teşekkürler.

Ben size istediğiniz amaçlar için yapamam korkuyorum.

Bildiğim kadarıyla söyleyebilirim, web sayfalarını hizmet yapmak istiyorsanız, tarayıcılar sayfaları render için böyle MIME yanıtları ile çalışmaz.

Bu mesajları nasıl çalıştığını bir örnek istiyorsanız, kendinize ekli bir e-posta göndermek ve e-posta istemcisi (değil webmail) üzerinde e-posta vücuda "Kaynağı görüntüle" seçeneğine gidin.

Sen MIME Multipart kodlamasını kullanarak aynı mesajı mesaj, eki ve muhtemelen diğer parçaları görürsünüz.

OTOH, if you want it to send email, there are libraries, like PHPMailer, that will do all the encoding for you.
If that's what you want, check this example at their website.

Edit:

Sen o zaman sadece yerine aslında e-posta göndermek, sonucunu kullanmak, mesajı oluşturmak için PHPMailer kullanabilirsiniz.

Böyle bir şey deneyin:

** Bu ** sadece bir başlangıç ​​noktası için, denenmemiş kodu

<?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!
  }
?>

Ben aynı şeyi başarmak için çalışıyorum.

Gibi dosyaları yüklerken, ancak tamamen mim tipine ilişkin HTTP başlıklarını görmezden görünüyor ve, - bu MSIE (onunla çevresinde oynanır değil ettik ama Opera biraz destek olabilir) şu anda birkaç normal / doğal ilgili destekleyen tek tarayıcı olduğu görülmektedir (bu tür bilgileri, eğilim vb önbelleğe gibi) diğer şeyler. URL. Mht dosya uzantısını (yani onun HTTP ile ilgili kuralların çoğu kırma) varsa gerçekten MSIE sadece dosya açılır.

Ayrıca, MSIE mutlu eki içinde bulunan verileri oluşturma olmadan contains gömülü multipart / ilgili dosya (bunu sağladı düz metin olarak kodlanmış) bir şey yükleyecektir. Bu dosyaları işlemek için işlevsellik dosyaların görüntülenmesini sağlamak için hızlı kesmek gibi görünüyor

Eğer php kullanarak. Ayrıştırmak Mht adresler web serverını yeniden (veya URL eşleştirmek için mod_rewrite kullanımı) Eğer ben bir sorgu dizesi ile çalışan umut bir sürü tutmak olmaz, ancak o zaman muhtemelen (işe yarayabilir göreceksiniz ) eklenir. Dinamik içerik (beklediğiniz zaman önbellek / refresh den dolacak değil) üreten Ama eğer sorunlar bekliyor.

Onun işe gitmiyor - uzun bir hikaye kısa kesmek için.