|
|
|
| как отправить письмо с несколькими файлами, допустим мне нужно отправить письмо чтобы с этим письмом было несколько вложеных файлов, на данный момент получается отправить только дин файл.
Ниже приведён мой код, он рабочий, всё отправляется нормально, единственное отправляется только один вложенный файл
<?php
$type_text = ($type_text == 'TEXT' ? 'text/plain': 'text/html');
$charset = ($charset == '' ? 'windows-1251': $charset);
$un = strtoupper(uniqid(time()));
$head = "From: $from\n";
$head .= "To: $to\n";
$head .= "Subject: $subj\n";
$head .= "X-Mailer: PHPMail Tool\n";
$head .= "Reply-To: $from\n";
$head .= "Mime-Version: 1.0\n";
$head .= "Content-Type:multipart/mixed;";
$head .= "boundary=\"----------".$un."\"\n\n";
$mes = "------------".$un."\nContent-Type:$type_text;charset=$charset\n";
$mes .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";
$mes .= "------------".$un."\n";
$fname = basename($att_path_full.$filename);
$data = file_get_contents($att_path_full.$filename);
$mes .= "Content-Type: application/octet-stream;\r\n" .
"name=\"$fname\"\r\n" .
"Content-Transfer-Encoding: base64\r\n" .
"Content-ID: <$fname>\r\n" .
"Content-Disposition: attachment; " .
"filename=".$fname."\r\n" .
"\n".chunk_split( base64_encode($data), 68, "\n");
if(!@mail($to, $subj, $mes, $head)){
return 0;
}else{
return 1;
}
?>
|
решил дополнить ещё одним кодом , думал что получится приложить второй файл
<?php
$fname2 = basename($att_path_full.$filename2);
$data2 = file_get_contents($att_path_full.$filename2);
$mes .= "Content-Type: application/octet-stream;\r\n" .
"name=\"$fname2\"\r\n" .
"Content-Transfer-Encoding: base64\r\n" .
"Content-ID: <$fname2>\r\n" .
"Content-Disposition: attachment; " .
"filename=".$fname2."\r\n" .
"\n".chunk_split( base64_encode($data2), 68, "\n");
?>
|
но ничего не вышло, присылается только один файл.
Подскажите что не так делаю, и как сделать чтобы отправлялось больше одного файла? | |
|
|
|
|
|
|
|
для: web777
(18.10.2008 в 12:24)
| | Код нерабочий изначально. Заголовок строится с нарушениями. В частности поле Content-type. | |
|
|
|
|
|
|
|
для: Trianon
(18.10.2008 в 12:34)
| | на самом деле это отрывок функции, я не стал всё приводить, думал что всё будет понятно, функция задаётся таким образом
<?php
function att_subscribe($from,$to,$subj,$text,$att_path_full='',$filestr='',$type_text = '',$charset = ''){
тут выше приводнённый код
}
а используется так
if( att_subscribe($email_site,$row['email'],$subscribe_subject,$subscribe_message,$att_path_full,$row['file'],$sent_format,$sent_format,$sent_kodir) ){
$status = '<font color="green">Отправлено...</font>';
}else{
$status = '<font color="#510000">Не отправлено...</font>';
}
?>
|
также в место тех двух блоков для загрузки фото, я написал такой код
<?php
if($filestr != ''){
$files = explode(';',$filestr);
foreach ($files as $v) {
$fname = basename($att_path_full.$v);
$data = file_get_contents($att_path_full.$v);
$mes .= "Content-Type: application/octet-stream;\r\n" .
"name=\"$fname\"\r\n" .
"Content-Transfer-Encoding: base64\r\n" .
"Content-ID: <$fname>\r\n" .
"Content-Disposition: attachment; " .
"filename=".$fname."\r\n" .
"\n".chunk_split( base64_encode($data), 68, "\n");
}
}
?>
|
где:
$subscribe_message тело письма
$subscribe_subject заголовок письма
$row['email'] емайл кому отправляем письмо
$att_path_full путь до директории где хранится файл
$row['file'] тут содержится список имён файлов с расширением и чередуется через точку запятую, например: file1.jpg;file2.gif;file3.gif
$sent_format формат письма, текстовый либо html
$sent_kodir кодировка письма
насчёт неправильности заголовков, не могли бы подсказать что не правильно | |
|
|
|
|
|
|
|
для: web777
(18.10.2008 в 12:48)
| | в частности здесь у Вас name переползает на следующую строку без фолдинга:
$mes .= "Content-Type: application/octet-stream;\r\n" .
"name=\"$fname\"\r\n" .
Использование разных терминаторов строки \r\n и \n в разных местах тоже не добавляет надежности.
Чтобы исправлять ошибки в таком коде, нужно смотреть порождаемый текст письма глазами, и сравнивать его с тем, что создают нормальные почтовые клиенты.
Если, конечно, неохота соответствующие стандарты изучать. | |
|
|
|
|
|
|
|
для: Trianon
(18.10.2008 в 12:51)
| | спасибо, тогда займусь изучением заголовков | |
|
|
|