Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Отправка e-mail
 
 автор: Женский человек   (12.08.2009 в 10:17)   письмо автору
 
 

Прошу ногами не бить :) Честно пыталась разобраться сама, но не получатся.

В скрипте от sim5 необходимая мне часть тоже некорректна.


    $headers .= "Content-Type: multipart/alternative; boundary=\"partbody-1\"" . $CRLF . $CRLF; 
    $body .= "--partbody-1" . $CRLF . $CRLF; 
    $body .= "Content-type: text/plain; charset=\"" . DEFAULT_CHARSET . "\"" . $CRLF; 
    $body .= "Content-Transfer-Encoding: 8bit" . $CRLF . $CRLF; 

    $body .= $text . $CRLF; 
    $body .= "--partbody-1" . $CRLF; 
    $body .= "Content-Type: multipart/related; boundary=\"partbody-2\"; type=\"text/html\"" . $CRLF . $CRLF; 
    $body .= "--partbody-2" . $CRLF; 
    $body .= "Content-type: text/html; charset=\"" . DEFAULT_CHARSET . "\"" . $CRLF; 
    $body .= "Content-Transfer-Encoding: base64" . $CRLF . $CRLF; 
    $body .= chunk_split(base64_encode($html)) . $CRLF . $CRLF; 
    $body .= $img ? "--partbody-2" . $CRLF : "--partbody-2--" . $CRLF;


В теле текстового варианта письма видны выделенные жирным строки. Я так понимаю, что где-то ошибка с разделителями?

  Ответить  
 
 автор: Trianon   (12.08.2009 в 10:21)   письмо автору
 
   для: Женский человек   (12.08.2009 в 10:17)
 

$body .= "--partbody-1" . $CRLF . $CRLF;

в этой строке один . $CRLF - явно лишний.

Из-за этого строка заголовка 1 части фактически становится строкой тела.


PS. Транспортное кодирование 8bit - не лучший выбор.

  Ответить  
 
 автор: Женский человек   (12.08.2009 в 11:08)   письмо автору
 
   для: Trianon   (12.08.2009 в 10:21)
 

Спасибо, добрый человек. А можно немного теории? Хочется самой ошибки видеть.

Если нужно отправить письмо с текстовой и html+img частью + аттач xls

Content-type: multipart/mixed
    Content-type: multipart/alternative 
        Content-type: text/plain 
        Content-type: multipart/related 
            Content-type: text/html 
            Content-type: image/jpeg 
            Content-type: image/jpeg
    Content-type: application/msexcel


Для такой структуры письма нужны ли разные разделители(boundary) и как правильно их расположить.


<?php
$EOL 
"\r\n";
$boundary     "--".md5(uniqid(time())); 
// здесь заголовки, не касающиеся вопроса, там мне все понятно
  
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"".$EOL.$EOL// 2 ограничителя, чтобы отделить заголовки от тела?
  
$multipart  "--$boundary".$EOL// нужен ли здесь разделитель?
  
$multipart .= "Content-Type: multipart/alternative; boundary=\"$boundary\"".$EOL.$EOL// а здесь сколько должно быть ограничителей? Нужно ли прописывать boundary? Должен ли он отличаться от boundary, указанного в заголовке Content-Type: multipart/mixed?
  
$multipart .= "--$boundary".$EOL;
  
$multipart .= "Content-Type: text/plain; charset=windows-1251".$EOL// отправляем заголовок с указанием субтипа?
  
$multipart .= "Content-Transfer-Encoding: 8bit".$EOL.$EOL// почему 8bit, а не base64?
  
$multipart .=  $plain_text.$EOL;
  
$multipart .= "--$boundary".$EOL;
  
$multipart .= "Content-Type: multipart/related; boundary=\"$boundary\"; type=\"text/html\"".$EOL.$EOL// отправляем еще один заголовок?
  
$multipart .= "--$boundary".$EOL;

Вот где-то на этом месте я и запуталась :( С количеством ограничителей и уникальными разделителями. Если есть минутка, помогите разобраться.

  Ответить  
 
 автор: Trianon   (12.08.2009 в 11:24)   письмо автору
 
   для: Женский человек   (12.08.2009 в 11:08)
 

Теории немного можно. RFC-2822, RFC-2045,
http://www.rfc-editor.org/rfc/rfc2045.txt
http://www.rfc-editor.org/rfc/rfc2047.txt

На практике любой объект состоит из заголовка и тела.
Заголовок (некоторое число первых строк) от тела отделяется первой пустой строкой.
объект, состоящий из нескольких частей определяется как multipart.
одни multipart могут быть вложены в другие, и в этом случае у них должны быть разные разделители

  Ответить  
 
 автор: Женский человек   (12.08.2009 в 12:18)   письмо автору
 
   для: Trianon   (12.08.2009 в 11:24)
 

>RFC-2822, RFC-2045
Угу, смотрела. Как баран на новые ворота :-[

А вот с ограничителями разобралась. Спасибо!

  Ответить  
 
 автор: Trianon   (12.08.2009 в 12:33)   письмо автору
 
   для: Женский человек   (12.08.2009 в 12:18)
 

>>RFC-2822, RFC-2045
>Угу, смотрела. Как баран на новые ворота :-[

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования