Вопрос по аттачу PHP

Wolf-izv
На сайте с 04.07.2008
Offline
49
794

Здравствуйте. Вопрос такой:

При получении письма, вложение приходит в виде Часть.att ~ ...

Я так понимаю, проблема в кодировке имени файла или в формате?!

Помогите исправить плиз.

Вот фрагмент кода:


if ($_FILES['resume']['name']) {
$filename = $_FILES['picture']['tmp_name'];

$f = fopen($filename,"rb");
$un = strtoupper(uniqid(time()));
$head = "From: ISO-CENTER\n";
$head .= "To: $admail\n";
$head .= "Subject: $subject\n";
$head .= "X-Mailer: PHPMail Tool\n";
$head .= "Reply-To: ISO-CENTER\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$content\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";


}

else $zag = $content;

if (!mail($admail, $subject, $zag, $head, $content))
Для тех кто в теме: бонус +25% от суммы пополнения депозита мой выбор брокера (http://www.roboforex.ru/?a=cyow)
wdsg
На сайте с 09.02.2009
Offline
31
#1

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

mail($admail, $subject, $zag, $head) 
Проектирование и разработка сложных IT-систем. Вожусь с проблемными задачами.
Wolf-izv
На сайте с 04.07.2008
Offline
49
#2
Не могу сказать, на сколько это поможет, но попробуйте не слать текст сообщения в качестве дополнительных заголовков.

Не помогло. Все так же Часть.att

А вот еще момент....таких письма приходит два...совершенно одинаковых. Т.Е. отправляешь форму один раз, а письма приходит два.

Wolf-izv
На сайте с 04.07.2008
Offline
49
#3

Итак, есть подвижки:

Аттач в письмо цепляется и приходит, по весу совпадает с отправляемым, но:

Скрипт не понимает имя и расширение файла, а соответственно он не читаем.

В исходном коде письма аттачевские заголовки выглядят следующим образом:

------------12572411084AEFFA146E0DA
Content-Type: application/octet-stream;name="phpSuxnVR"
Content-Transfer-Encoding:base64
Content-Disposition:attachment;
filename="phpSuxnVR"

т.е. имя файла получается - "phpSuxnVR"

При переименовании в оригинал, аттач открывается отлично.

Код обработчика:

</html>" ;
if ($_FILES['resume']['name']) {
$filename = $_FILES['resume']['tmp_name'];

$f = fopen($filename,"rb");
$un = strtoupper(uniqid(time()));
$head = "From: ISO-CENTER\n";
$head .= "To: $admail\n";
$head .= "Subject: $subject\n";
$head .= "X-Mailer: PHPMail Tool\n";
$head .= "Reply-To: ISO-CENTER\n";
$head .= "Mime-Version: 1.0\n";
$head .= "Content-Type:multipart/mixed;";
$head .= "boundary=\"----------".$un."\"\n\n";
$zag = "------------".$un."\nContent-Type:text/html charset=koi8-r\\n";
$zag .= "Content-Transfer-Encoding: 8bit\r\n\n$content\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; \n";
$zag .= "filename=\"".basename($filename)."\"\n\n";
$zag .= chunk_split(base64_encode(fread($f,filesize($filename))))."\n";


}

else $zag = $content;

if (!mail($admail, $subject, $zag, $head, $content))

Помогите плиз исправить. Чуть-чуть осталось!))) :)

K
На сайте с 31.08.2006
Offline
47
#4

вот эту строку:

$zag .= "name=\"".basename($filename)."\"\n";

надо заменить на

$zag .= "name=\"".$_FILES['resume']['name']."\"\n";
Размещаем статьи - Украинское СМИ, ПР5, ТИЦ 3000, ЯК, ДМОЗ, домену > 10 лет (/ru/forum/416715)
Wolf-izv
На сайте с 04.07.2008
Offline
49
#5
Kirilll:
вот эту строку:
$zag .= "name=\"".basename($filename)."\"\n";

надо заменить на
$zag .= "name=\"".$_FILES['resume']['name']."\"\n";

Спасибо огромное! Заработало!!! 🍻

Остался одн косяк....письма приходит два. Не понятно почему так.

K
На сайте с 31.08.2006
Offline
47
#6

Wolf-izv, покажите код полностью. У меня есть предположение, что код отправки письма вызывается в цикле, и срабатывает 2 раза...

Wolf-izv
На сайте с 04.07.2008
Offline
49
#7
Kirilll:
Wolf-izv, покажите код полностью. У меня есть предположение, что код отправки письма вызывается в цикле, и срабатывает 2 раза...

Разобрался!!! Спасибо за помощь...дело было в дубле заголовка кому. Один в конфиге, а второй в обработчике. Один удалил и все стало нормально))):)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий