письмо с аттачем

LIME

Новичок
приходит как текст
подскажите ошибку плз
PHP:
                $boundary='die_bastard';
  		$header = "MIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary='$boundary'\r\n\r\n";
                $body="--$boundary\r\n";
                $body.="Content-type: text/html; charset='utf-8'\r\nContent-Disposition:attachment\r\n\r\n$file\r\n";
                $body.="Content-Transfer-Encoding: quoted-printable\r\n";
                $body.="Content-Disposition: attachment\r\n\r\n";
                $body.="$message\r\n";
                $body.="--$boundary\r\n";
                $body.="Content-Transfer-Encoding:base64\r\n";
                $body.="Content-Type: application/octet-stream;name==?utf-8?B?$file_name?=\r\n";
                $body.="Content-Disposition: attachment\r\n\r\n$boundary--";
                return mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $body, $header);
$message и $file_name уже в base64
 

LIME

Новичок
подредактировал для читабельности
неужто никто не видит косяка?
 

WMix

герр M:)ller
Партнер клуба
нет самого файла... кроме заголовков ....
чтот с header кажись намудрил,.
текст зачемто аттачментом отправил и не перекодировал в quoted-printable как написал....
вроде и с разделителями неправильно...
бред ты написал! извени конечно...

или учи MIME или бери готовые библиотеки
 

Breeze

goshogun
Команда форума
Партнер клуба
самое простое -- изучить сорцы настоящего письма

у тебя тут и с хедерами проблема, и с переводами строк фигня
 

LIME

Новичок
самое простое -- изучить сорцы настоящего письма
у тебя тут и с хедерами проблема, и с переводами строк фигня
так и сделал после того как похмелье прошло)
хотел чтоб просто поправили но спасибо
навсякий вот
PHP:
	$boundary = 'die_bastardDddd';
        $header = "MIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=$boundary\r\n\r\n";
        $body = "--$boundary\r\n";
        $body.="Content-type: text/plain; charset=utf-8\r\n";
        $body.="Content-Transfer-Encoding: base64\r\n\r\n";
        $body.="$message\r\n";
        $body.="--$boundary\r\n";
        $body.="Content-Type: application/octet-stream;name==?utf-8?B?$file_name?=\r\n";
        $body.="Content-Transfer-Encoding:base64\r\n";
        $body.="Content-Disposition: attachment\r\n\r\n$file\r\n$boundary--";
        return mail($to, '=?UTF-8?B?' . base64_encode($subject) . '?=', $body, $header);
 

kvmutl

Новичок
вмесо возвращения функции mail, наложите проверку if, чтобы в случае ошбки при оправке выводилось какое-то сообщение, а не так как сейчас...
вообще готовых форм в нете валом, с нормальными алгоритмами проверок и пр. гуглите
 

LIME

Новичок
есть проверка))
и сообщение есть))
для того и ретурн))
от себя могу посоветовать Вам разделять ф-ционал
это позволяет применить например одну ф-цию с разными например сообщениями на разных например страницах))
 

kvmutl

Новичок
а это полный код функции у вас, а проверка результата за ее пределами производится... )) поняно)
 

LIME

Новичок
и с переводами строк фигня
какой еще перевод строк))
тут ОС не причем вообще
это разделитель заголовков в HTTP протоколе
странно столь умудренный муж допускает такие оговорки))
я не прав?
 

Breeze

goshogun
Команда форума
Партнер клуба
какой еще перевод строк))
тут ОС не причем вообще
это разделитель заголовков в HTTP протоколе
странно столь умудренный муж допускает такие оговорки))
я не прав?
А теперь сам подумай, что есть http-запрос и из чего он состоит.
И заодно про символы \r и \n, что есть что
 

LIME

Новичок
состоит из текста
причем это не передача файла в текстовом режиме
я не прав?
подтолкни мысль в правильную сторону
пожалуйста
 

Breeze

goshogun
Команда форума
Партнер клуба
состоит из текста
причем это не передача файла в текстовом режиме
я не прав?
подтолкни мысль в правильную сторону
пожалуйста
в контексте содержания нет разницы между текстовым файлом и http-запросом.
с точки зрения программной обработки оба -- текст, только в случае с http жестко регламентированный. как и ftp-протокол -- тоже текст, но со своими тараканами.

в итоге, символ перевода строки, как и сама фраза "перевод строки", актуальны в случае с файлом, http, ftp и к ОС в данном случае не имеет никакого отношения.

ЗЫ: так что когда речь заходит о переводе строк с т.з. обработки текста, в 99,99% случаев речь идет о символе перевода строки \n с кодом 0x0A в шестнадцатеричной или 10 в десятеричной системе.
 

WMix

герр M:)ller
Партнер клуба
возможно я ошибаюсь, но данная часть
PHP:
 $header = "MIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=$boundary\r\n\r\n";
всеже часть письма а не заголовка...
заголовок это от кого к кому, через кого, кому копию и тд...

далее в письме ты гришь, что письмо multipart, или что это не просто текст а целая сборка всякой всячины, и определяешь разделитель == boundary

а уже внутри multipart описываешь и текст и альтернативу в html хотя чаще наоборот, что есть вложения и тд, каждую часть разделяя разделителем, который кстати совсем не похож на текст, больше md5... хорошо есть -- а то часто можно кусок текста письма за разделитель принять
и если уже пишешь
PHP:
$body.="Content-Transfer-Encoding: base64\r\n\r\n";
то ожидается
PHP:
//$body.="$message\r\n";
$body.=base64_encode($message)."\r\n";
кстати как и тут
PHP:
$body.="Content-Transfer-Encoding:base64\r\n";
$body.="Content-Disposition: attachment\r\n\r\n$file\r\n$boundary--";// << не вижу что перекодированно
при этом обрати внимание что грит Breeze, если чесно я забыл про переводы строк,... дааавно это было
 

LIME

Новичок
$message и $file_name уже в base64
с точки зрения программной обработки оба -- текст
чииивооо?
это редакторы воспринимают файл как текст и в зависимости от ОС переводят строки
в ином контексте перевода строк ВООБЩЕ НЕТ
 

WMix

герр M:)ller
Партнер клуба
чииивооо?
это редакторы воспринимают файл как текст и в зависимости от ОС переводят строки
в ином контексте перевода строк ВООБЩЕ НЕТ
глупец, когда появился маил, микрософтом и яблоками еще не пахло...
 

LIME

Новичок
хм...действительно
спасибо за разъяснения и оскорбления))
 

Breeze

goshogun
Команда форума
Партнер клуба
LIME
А все потому, что занимаешься буквоедством вместо решения проблемы.
 
Сверху