|
|
|
| Прошу ногами не бить :) Честно пыталась разобраться сама, но не получатся.
В скрипте от 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;
|
В теле текстового варианта письма видны выделенные жирным строки. Я так понимаю, что где-то ошибка с разделителями? | |
|
|
|
|
|
|
|
для: Женский человек
(12.08.2009 в 10:17)
| | $body .= "--partbody-1" . $CRLF . $CRLF;
в этой строке один . $CRLF - явно лишний.
Из-за этого строка заголовка 1 части фактически становится строкой тела.
PS. Транспортное кодирование 8bit - не лучший выбор. | |
|
|
|
|
|
|
|
для: 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;
|
Вот где-то на этом месте я и запуталась :( С количеством ограничителей и уникальными разделителями. Если есть минутка, помогите разобраться. | |
|
|
|
|
|
|
|
для: Женский человек
(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 могут быть вложены в другие, и в этом случае у них должны быть разные разделители | |
|
|
|
|
|
|
|
для: Trianon
(12.08.2009 в 11:24)
| | >RFC-2822, RFC-2045
Угу, смотрела. Как баран на новые ворота :-[
А вот с ограничителями разобралась. Спасибо! | |
|
|
|
|
|
|
|
для: Женский человек
(12.08.2009 в 12:18)
| | >>RFC-2822, RFC-2045
>Угу, смотрела. Как баран на новые ворота :-[
Когда я первый раз смотрел, впечатление было схожее.
Решается повторным заглядыванием.
В конечном итоге ворота становятся старыми, и эффект внезапности перестает отвлекать от восприятия сути.
Вот тогда то и возникает прозрение. | |
|
|
|