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

Форум PHP

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

 

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

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

тема: Помогите с отправкой аттача на мыло.
 
 автор: This_me   (29.09.2005 в 16:30)   письмо автору
1.2 Кб
 
 

Вот код.
С первого взгляда всё должно работать... фаил загружается на сервер, но на мыло ничего не приходит почему-то...

Ошибок никаких нет.


<?php

function XMail$from$to$subj$text$filename) {
   
$f         fopen($filename,"r");
   
$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";
   
$zag       "------------".$un."\nContent-Type:text/html;\n";
   
$zag      .= "Content-Transfer-Encoding: 8bit\n\n$text\n\n";
   
$zag      .= "------------".$un."\n";
   
$zag      .= "Content-Type: application/octet-stream;";
   
$zag      .= "name=\"".basename($filename)."\"\n";
   
$zag      .= "Content-Transfer-Encoding:base64\n";
   
$zag      .= "Content-Disposition:attachment;";
   
$zag      .= "filename=\"".basename($filename)."\"\n\n";
   
$zag      .= chunk_split(base64_encode(fread($f,filesize($filename))))."\n";
   
   return @
mail($to$subj$zag$head);
}
?> 


Вот. Там сверху ещё идёт код заливки файла на сервер, его писать не стал - работает.
Полные версии обоих файлов (скрипт + форма) в аттаче.

   
 
 автор: cheops   (29.09.2005 в 19:16)   письмо автору
 
   для: This_me   (29.09.2005 в 16:30)
 

Попробуйте параллельно вот этот скрипт - он точно работает и выполняет эту же задачу - так вы сможете локализовать баг.

   
 
 автор: This_me   (29.09.2005 в 20:18)   письмо автору
 
   для: cheops   (29.09.2005 в 19:16)
 

ага... я уже пытался ваш скрипт чуток под себя изменить... но не получилось
может подскажете:
получатель, точнее получатели, берутся из текстового файла и в массив записываются.
$mail_array = file("mail.txt");


и циклом всем по очереди должно отослаться письмо с аттачем.

цикл беру for и пишу его в скрипте в строчке, которая перед комментом "// Отправляем почтовое сообщение", заканчивается цикл в самом конце.
for($i=0; $i < count($mail_array); $i++) {


Поле "Кому" из формы убираю и в коде, что бы во многих местах не менять,

меняю
$mail_to = $_POST['mail_to'];
на
$mail_to = $mail_array[$i];


Вот, по моим соображениям мои требования должны осуществиться этим методом, но тут уже вылезают всякого рода ошибки, типа "Call to undefined function: send_mail() "

Не поможете мне?
Как надо правильно изменить, что бы работало?

   
 
 автор: cheops   (29.09.2005 в 22:30)   письмо автору
 
   для: This_me   (29.09.2005 в 20:18)
 

Так а файл с функцией send_mail() подключили - скрипт говорит, что не видит этой функции...

   
 
 автор: This_me   (29.09.2005 в 23:33)   письмо автору
 
   для: cheops   (29.09.2005 в 22:30)
 

и как исправить, что бы работало?

   
 
 автор: cheops   (30.09.2005 в 12:27)   письмо автору
 
   для: This_me   (29.09.2005 в 23:33)
 

Прикрепите архив с тем, что у вас сейчас есть, чтобы можно было протестировать на локальной машине?

   
 
 автор: This_me   (30.09.2005 в 16:11)   письмо автору
 
   для: cheops   (30.09.2005 в 12:27)
 

Ну вот, что у меня есть сейчас.

   
 
 автор: cheops   (30.09.2005 в 21:25)   письмо автору
 
   для: This_me   (30.09.2005 в 16:11)
 

Вынесите функцию send_mail() за пределы цикла for()

   
 
 автор: This_me   (01.10.2005 в 07:38)   письмо автору
 
   для: cheops   (30.09.2005 в 21:25)
 

Спасибо, что помогаете... но всё-равно не отправляется...

Теперь на экран выводится "К сожалению, письмо не отправлено" :(

   
 
 автор: cheops   (01.10.2005 в 12:34)   письмо автору
 
   для: This_me   (01.10.2005 в 07:38)
 

Хм... а почему у вас строка
<?php
  $mail_to 
$mail_array[$i];
?>

находится за пределами цикла - внесите эту строку внутрь.

   
 
 автор: This_me   (01.10.2005 в 17:11)   письмо автору
 
   для: cheops   (01.10.2005 в 12:34)
 

Отлично, всё заработало!
Спасибо огромное!


Теперь буду знать :)

   
 
 автор: This_me   (02.10.2005 в 17:24)   письмо автору
 
   для: This_me   (01.10.2005 в 17:11)
 

Нет, всё-таки у меня будет последний вопрос :)

Прикреплять буду только файлы html. Точнее, MHT фаил (архив:html+картинки). Другие виды файлов прикреплять не буду.

Вопрос: как его сразу выводить в тексте письма, а не только прикреплённым файлом?

   
 
 автор: cheops   (02.10.2005 в 19:14)   письмо автору
 
   для: This_me   (02.10.2005 в 17:24)
 

Посмотрите тему по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=7853

   
 
 автор: This_me   (02.10.2005 в 20:00)   письмо автору
 
   для: cheops   (02.10.2005 в 19:14)
 

ну там же не то...

Как саму прикреплённую страницу вывести в теле письма?

Уже понял, что с MHT ничего не получится, так сто прикреплять буду обычную html...

   
 
 автор: cheops   (02.10.2005 в 20:07)   письмо автору
 
   для: This_me   (02.10.2005 в 20:00)
 

А зачем HTML-страницу прикреплять? Её можно сделать телом письма...

   
 
 автор: This_me   (02.10.2005 в 20:51)   письмо автору
 
   для: cheops   (02.10.2005 в 20:07)
 

у меня был скрипт, где в форму можно было hml забивать, но он как-то криво отображался...

   
 
 автор: vovik_sumy   (20.10.2005 в 14:17)   письмо автору
 
   для: cheops   (29.09.2005 в 19:16)
 

Привет!
Если я пишу $path=$mosConfig_absolute_path."/components/".$option."/upload/".$row->filename;
то когда получаю письмо там вложенный файл имеет название : "_home_admina2m_domains_volya-gromady.org.ua_public_html_components_com_jobline_upload_1129802495.jpg"
как можно изменить это название? Не хорошо ведь когда получат такой вот файл...

   
 
 автор: vovik_sumy   (20.10.2005 в 16:28)   письмо автору
 
   для: vovik_sumy   (20.10.2005 в 14:17)
 

Привет!
Всё просто:

              $message_part .= "Content-Disposition: attachment; filename = \"".basename($path)."\"\n\n";

Решение нашёл тут:
http://www.wmaster.ru/scripts/detail.php?id=144
Спасибо!

   
 
 автор: FanPHP   (21.10.2005 в 18:59)   письмо автору
 
   для: vovik_sumy   (20.10.2005 в 16:28)
 

(..удалено..)

   
 
 автор: FanPHP   (21.10.2005 в 19:00)   письмо автору
 
   для: vovik_sumy   (20.10.2005 в 16:28)
 

Пример от cheops чуток глючит при отправке обычного текстового файла. Например если отправить (см. аттач) то файл придёт на один байт меньше (есенно, распаковать перед отправкой).
Ешё маленькая просьба если возможно прикладывать обучающие примеры в архиве, т.к. при копировании/вставке из Opera нарушается рассотяние между строками и форматирование что делает пример не рабочим.

   
Rambler's Top100
вверх

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