Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > отправка письма с вложением


Автор: begin 16.8.2009, 14:12
Отправляю письмо с вложением: пользователь на сайте указывает имя, телефон, имейл, текст и прикладывает файл резюме.
Сохраняю файл во временную папку и далее отправляю письмо таким образом:
Код

if ((isset($_FILES['userfile'])) && ($_FILES['userfile']['size']))
{
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
$uploadfile="resume/".$_FILES['userfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
{
$mail_adress='myemail@mail.ru';
$name=$_POST['name'];
$phone=$_POST['phone'];
$text=$_POST['text'];
$email=$_POST['email'];
$mail_text='Имя, фамилия: '.$name."\nТелефон для связи: ".$phone."\nE-mail: ".$email."\n".$text;
$mail_subj='Поступило резюме';
$from="<admin@mysite.ru>";
$f = fopen($uploadfile,"rb");
$un = strtoupper(uniqid(time()));
$head = "From: $from\n";
$head .= "To: $mail_adress;\n";
$head .= "Subject: $mail_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$mail_text\n\n";
$zag .= "------------".$un."\n";
$zag .= "Content-Type: application/octet-stream;";
$zag .= "name=\"".basename($uploadfile)."\"\n";
$zag .= "Content-Transfer-Encoding:base64\n";
$zag .= "Content-Disposition:attachment;";
$zag .= "filename=\"".basename($uploadfile)."\"\n\n";
$zag .= chunk_split(base64_encode(fread($f,filesize($uploadfile))))."\n";
if (!mail("$to", "$subj", $zag, $head))
{
echo 'Письмо не отправлено!';
}
else
{
echo  'Ваше резюме успешно отправлено.';
}
}
}
}

Итог: из отправленных 8 писем пришли только 4.
В четырех НЕ дошедших были вложены *.doc файлы размером 20-40 кб. В четырех ДОШЕДШИХ были вложены файлы *.psd, *.rar, *.jpg размерами 500-800 кб. Во всех восьми случаях скрипт выдавал: 'Ваше резюме успешно отправлено.'

Проверил папку resume, в которой сохраняются отправляемые файлы - все восемь залиты нормально. Имена имеют как латинские так и русские символы - но встречаются и те и те среди ВСЕХ файлов (как отправленных, так и не дошедших)

Автор: bars80080 16.8.2009, 15:21
если не доходят только с .doc файлами, то возможно у вас на приёмной стороне стоит фильтр, определяющий эти письма как спам. посмотрите, что хостер пишет по этому поводу

Автор: begin 16.8.2009, 16:30
Приемный ящик сейчас на mail.ru
Специально зашел на него через их интерфейс и проверил обе папки: "Входящие" и "Сомнительные". Все 4 пришедших письма лежат во "Входящих". В "Сомнительных" ничего нет

Автор: programming 16.8.2009, 16:42
begin, я думаю, что проблема в хостинге.
Попробуйте по отправлять много раз каждые файлы, которые Вы уже пробовали отправлять. Если доходят постоянно одни и те же файлы - проблема в хостинге.

Автор: begin 16.8.2009, 17:52
Сделал проверку: отправил письма с разными вложениями на 4 ящика на разных серверах: 
сервер mail.ru - не проходят письма с *.doc файлами
платных хостинг в Украине - пришли все
платный хостинг в США - пришли все
сервер gmail - пришли все

А статистика сервера, на котором лежит сайт, показывает, что все письма уходят нормально и ничего не возвращается.
Получается, что mail.ru действительно считает такие письма спамом и удаляет их даже не помещая в папку "Сомнительные"

Автор: programming 16.8.2009, 18:05
Я знаю, что мэйл не принимает некоторые файлы,потому что считает, что они нарушают авторские права..
А так..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)