|
|
|
| почему на один почтовый ящик приходит все так как надо, а на другой пусто, а на третий вообще все в символах?
<?php
$file_name="11111.jpg";
$subj="Отправка изображения";
$bound="spravkaweb-1234";
$headers="From: \"Oleg\" <rod@meta.ua> \n";
$headers.="To: work@gmail.com \n";
$headers.="Subject: $subj \n";
$headers.="Mime-Version: 1.0 \n";
$headers.="Content-Type: multipart/alternative; boundary=\"$bound\" \n";
$body="--$bound \n";
$body.="Content-type: text/html; charset=\"windows-1251\" \n";
$body.="Content-Transfer-Encoding: 8bit \n\n";
$body.="<h3>Привет</h3>
Я нашел пример с отсылкой картинки в теле письма.<BR>
Вроде, работает:<BR>
<img src=\"cid:spravkaweb_img_1\">";
$body.="\n\n--$bound \n";
$body.="Content-Type: image/jpeg; name=\"".basename($file_name)."\" \n";
$body.="Content-Transfer-Encoding:base64 \n";
$body.="Content-ID: <spravkaweb_img_1> \n\n";
$f=fopen($file_name,"rb");
$body.=base64_encode(fread($f,filesize($file_name)))." \n";
$body.="--$bound-- \n\n";
mail("work@gmail.com", $subj, $body, $headers);
?>
|
| |
|
|
|
|
автор: ..... (08.08.2010 в 15:43) |
|
|
для: inga
(08.08.2010 в 14:34)
| | >multipart/alternative
Multipart
Подтип mixed
Может создавать сообщения, состоящие из нескольких фрагментов, которые разделены между собой границей, задаваемой в качестве параметра подтипа
Подтип alternative
Данный подтип позволяет организовать вариабельный просмотр почтового сообщения в зависимости от типа программы просмотра
Подтип digest
Предназначен для многоцелевого почтового сообщения, когда различным частям хотят приписать более детальную информацию, чем просто тип:
Подтип parallel
Предназначен для составления такого почтового сообщения, части которого должны отображаться одновременно, что предполагает запуск сразу нескольких программ просмотра. Синтаксис такого сообщения аналогичен рассмотренным выше.
(где-то с google://?q="site:relcom[.]ru mime") | |
|
|
|
|
автор: .... (08.08.2010 в 16:00) |
|
|
для: inga
(08.08.2010 в 14:34)
| | а так ничего не понял :) вроде стандартно переводы строк вместо \n должны быть \r\n | |
|
|
|
|
|
|
|
для: ....
(08.08.2010 в 16:00)
| | это смотря где... в линухе \n | |
|
|
|
|
автор: ..... (08.08.2010 в 17:22) |
|
|
для: Valick
(08.08.2010 в 16:12)
| | Спорный вопрос.
например в RFC2616 есть кой какие инструкции по этому поводу
3.7.1 Canonicalization and Text Defaults
Internet media types are registered with a canonical form. An
entity-body transferred via HTTP messages MUST be represented in the
appropriate canonical form prior to its transmission except for
"text" types, as defined in the next paragraph.
When in canonical form, media subtypes of the "text" type use CRLF as
the text line break. HTTP relaxes this requirement and allows the
transport of text media with plain CR or LF alone representing a line
break when it is done consistently for an entire entity-body. HTTP
applications MUST accept CRLF, bare CR, and bare LF as being
representative of a line break in text media received via HTTP. In
addition, if the text is represented in a character set that does not
use octets 13 and 10 for CR and LF respectively, as is the case for
some multi-byte character sets, HTTP allows the use of whatever octet
sequences are defined by that character set to represent the
equivalent of CR and LF for line breaks. This flexibility regarding
line breaks applies only to text media in the entity-body; a bare CR
or LF MUST NOT be substituted for CRLF within any of the HTTP control
structures (such as header fields and multipart boundaries).
......ещё там чего-то ........
3.7.2 Multipart Types
MIME provides for a number of "multipart" types -- encapsulations of
one or more entities within a single message-body. All multipart
types share a common syntax, as defined in section 5.1.1 of RFC 2046
[40], and MUST include a boundary parameter as part of the media type
value. The message body is itself a protocol element and MUST
therefore use only CRLF to represent line breaks between body-parts.
//Но незнаю насколько оно устаревшее, и всётаки больше зависит от клиентско-серверских программ , чем от инструкций | |
|
|
|
|
автор: ..... (08.08.2010 в 16:14) |
|
|
для: ....
(08.08.2010 в 16:00)
| | и вроде такие сообщения обычно отправляют всё собрав впеременной $header оставив вместо $body пустую строку
mail($to, $subject, '', $header)
типа
<?
$header .= 'MIME-Version: 1.0' . XX;
$header = 'From: ' . $from_n . ' <' . $from . '>' . XX;
$header .= 'Reply-To: "' . $from . '"' . XX;
$header .= 'Content-Type: multipart/mixed; boundary="' . $uid . '"' . XXX;
$header .= 'Content-Description: X' . XX;
$header .= '--' . $uid . XX;
$header .= 'Content-type: text/plain; charset=' . $encod . XX;
$header .= 'Content-Transfer-Encoding: 7bit' . XXX;
$header .= $text . XXX;
$header .= '--' . $uid . XX;
$header .= 'Content-Type: application/octet-stream; name="' . $name . '"' . XX;
$header .= 'Content-Transfer-Encoding: base64' . XX;
$header .= 'Content-Disposition: attachment; filename="' . $name . '"' . XXX;
$header .= $content . XXX;
............
$header .= '--' . $uid . '--' . XXX;
|
| |
|
|
|
|
|
|
|
для: .....
(08.08.2010 в 16:14)
| | так ничего я и не поняла, почему почтовые сервисы получают по разному письмо отправленное выше написаным мною кодом. Content-Type пробывала ставить разный. А при чем здесь перенос строки вообще не поняла /n | |
|
|
|
|
автор: ...... (08.08.2010 в 19:25) |
|
|
для: inga
(08.08.2010 в 18:43)
| | вставьте наример сюда адреса картинок и ящиков, посмотрите изменится-ли результат
<?php
define('XX', "\r\n");
define('XXX', "\r\n\r\n");
define('ZZ', "\n");
$to = 'test@test[.]test'; //Ваши адреса на которые не правильно приходит
$from = 'test2@test2[.]test2'; // адрес отправителя
$from_n = 'ИмяОтправителя';
$subject = 'тема';
$text = 'Hello.......';
$uid = md5(time());
$filearr = array('1.gif', '2.gif', '3.gif'); //Картинки которые должны лежать
$encod = 'UTF-8';
//$from_n = iconv("UTF-8", "CP1251", $from_n);
//$subject = iconv("UTF-8", "CP1251", $subject);
//$text = iconv("UTF-8", "CP1251", $text);
// Письмо как и текст в utf-8
$header = 'MIME-Version: 1.0' . XX;
$header .= 'From: ' . $from_n . ' <' . $from . '>' . XX;
$header .= 'Reply-To: "' . $from . '"' . XX;
$header .= 'Content-Type: multipart/mixed; boundary="' . $uid . '"' . XXX;
$header .= 'Content-Description: X' . XX;
$header .= '--' . $uid . XX;
$header .= 'Content-type: text/plain; charset=' . $encod . XX;
$header .= 'Content-Transfer-Encoding: 7bit' . XXX;
$header .= $text . XXX;
for($i=0; $i<count($filearr); ++$i) {
if (!($content = file_get_contents($filearr[$i]))) {
echo 'Не прочитан файл ' . htmlspecialchars($filearr[$i]) . '<br>' . ZZ;
continue;
}
$content = chunk_split(base64_encode($content));
$name = basename($file);
$header .= '--' . $uid . XX;
$header .= 'Content-Type: application/octet-stream; name="' . $name . '"' . XX;
$header .= 'Content-Transfer-Encoding: base64' . XX;
$header .= 'Content-Disposition: attachment; filename="' . $name . '"' . XXX;
$header .= $content . XXX;
}
$header .= '--' . $uid . '--' . XXX;
if (mail($to, $subject, '', $header)) echo 'СООБЩЕНИЕ ОТПРАВЛЕНО' . ZZ;
else echo 'НЕОТПРАВЛЕНО ПОПРОБУЙТЕ ПОЗЖЕ'. ZZ;
?>
| если я нигде не опечатался // вырезал все проверки и функции | |
|
|
|
|
|
|
|
для: ......
(08.08.2010 в 19:25)
| | Ужас. | |
|
|
|
|
автор: ..... (08.08.2010 в 19:42) |
|
|
для: sim5
(08.08.2010 в 19:34)
| | в чём ?
это просто например.
И без загрузки всего в память функцией mail() сообщение не отправить | |
|
|
|
|
|
|
|
для: .....
(08.08.2010 в 19:42)
| | Потому, что просили во-первых совсем не это, а во-вторых оформление ни к черту. | |
|
|
|
|
автор: ..... (08.08.2010 в 20:05) |
|
|
для: sim5
(08.08.2010 в 19:53)
| | не анимательно читал первый пост.
со вторым не согласен :) код был совсем не оформлен, старался как мог нагляднее его оформить. | |
|
|
|
|
автор: ..... (08.08.2010 в 19:32) |
|
|
для: inga
(08.08.2010 в 18:43)
| | не английско-цифровые имена файлов кодируются япечиальным способом | |
|
|
|
|
|
|
|
для: .....
(08.08.2010 в 19:32)
| | ничего так и не получилось | |
|
|
|
|
|
|
|
для: inga
(09.08.2010 в 12:53)
| | В этом разделе приводился подобный скрипт, кроме этого есть в сети такие и не мало, получите, изучите. | |
|
|
|