Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.11.2013
Сообщений: 16
1

Отправка сообщения с вложением

09.04.2014, 15:32. Показов 1756. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем есть форма такая у меня!
index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<HTML> 
<HEAD> 
<TITLE>Отправка сообщения с вложением</TITLE> 
</HEAD> 
<BODY> 
<H3> <center><font color="#1E90FF">Отправка сообщения с вложением</font></H3> 
<center> 
<table width="1" border="0"> 
<form action="simple_mail.php" enctype="multipart/form-data" method="post"> 
    <tr><td width="50%">Кому:</td><td align="right"><input type="text" name="mail_to" maxlength="32"></td></tr> 
    <tr><td width="50%">Ваше имя:</td><td align="right"><input type="text" name="mail_subject" maxlength="64"></td></tr> 
    <tr><td width="50%">Photo:</td><td align="right"><input type="file" name="mail_file" maxlength="64"></td></tr> 
    <tr><td colspan="2"><input type="submit" value="Отправить"></td></tr> 
</form> 
</table> 
</center> 
</BODY> 
</HTML>
simple_mail.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php 
  if(empty($_POST['mail_to'])) exit("Введите адрес получателя"); 
  // проверяем правильности заполнения с помощью регулярного выражения 
  if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i", $_POST['mail_to'])) exit("Введите адрес в виде somebody@server.com"); 
  $picture = ""; 
  // Если поле выбора вложения не пустое - закачиваем его на сервер 
  if (!empty($_FILES['mail_file']['tmp_name'])) 
  { 
    // Закачиваем файл 
    $path = $_FILES['mail_file']['name']; 
    if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path; 
  } 
  $thm = $_POST['mail_subject'];
  $msg = $_POST['mail_msg'];
  $mail_to = $_POST['mail_to'];
  // Отправляем почтовое сообщение 
  if(empty($picture)) mail($mail_to, $thm, $msg); 
  else send_mail($mail_to, $thm, $msg, $picture); 
  // Вспомогательная функция для отправки почтового сообщения с вложением (Trianon)
  function send_mail($mail_to, $thema, $html, $path)   
  { if ($path) {  
    $fp = fopen($path,"rb");   
    if (!$fp)   
    { print "Cannot open file";   
      exit();   
    }   
    $file = fread($fp, filesize($path));   
    fclose($fp);   
    }  
    $name = "file.ext"; // в этой переменной надо сформировать имя файла (без всякого пути)  
    $EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
    $boundary     = "--".md5(uniqid(time()));  // любая строка, которой не будет ниже в потоке данных.  
    $headers    = "MIME-Version: 1.0;$EOL";   
    $headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  
    $headers   .= "From: address@server.com";  
      
    $multipart  = "--$boundary$EOL";   
    $multipart .= "Content-Type: text/html; charset=windows-1251$EOL";   
    $multipart .= "Content-Transfer-Encoding: base64$EOL";   
    $multipart .= $EOL; // раздел между заголовками и телом html-части 
    $multipart .= chunk_split(base64_encode($html));   
 
    $multipart .=  "$EOL--$boundary$EOL";   
    $multipart .= "Content-Type: application/octet-stream; name=\"$name\"$EOL";   
    $multipart .= "Content-Transfer-Encoding: base64$EOL";   
    $multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";   
    $multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла 
    $multipart .= chunk_split(base64_encode($file));   
 
    $multipart .= "$EOL--$boundary--$EOL";   
      
        if(!mail($mail_to, $thema, $multipart, $headers))   
         {echo "Письмо не отправленно!";          //если не письмо не отправлено
      }  
    else { //// если письмо отправлено
    return True;  
    }  
  exit;  
  }
?>
Нужно сделать так чтоб при отправке было уведомление что письмо отправлено и после отправки редирект обратно на Index.php то есть на форму
и мне необходимо чтоб не пользователь прикреплял фотку, а я указал путь к фотке а она отправлялась на почту пользователю. Хочу скрыть это поле вообще!
заранее благодарен вам!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2014, 15:32
Ответы с готовыми решениями:

Отправка сообщения с сайта с вложением Html+php
код хтмл &lt;!doctype html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset=&quot;utf-8&quot;&gt; ...

Отправка письма с вложением
Здравтсвуйте! У меня такая функция: Function sentMail($from, $to, $subject, $body) { global...

Отправка письма с вложением
Здравствуйте! встречал ф-ю отправки письма, где массив с файлами - это параметр. А как получить...

Отправка почты с вложением
Написал скрипт отправки почти с вложением через фукнцию mail(); Залил на сервер, все работает. ...

4
12 / 12 / 3
Регистрация: 17.03.2014
Сообщений: 75
09.04.2014, 17:18 2
Не совсем понятно, в чем именно вопрос, что не получается? Чтобы скрыть поле на форме <input type='hidden' name=''">
0
0 / 0 / 0
Регистрация: 14.11.2013
Сообщений: 16
09.04.2014, 17:32  [ТС] 3
Не совсем понятно, в чем именно вопрос, что не получается? Чтобы скрыть поле на форме <input type='hidden' name=''">
проблема в том как мне прикрепить файл чтоб он был добавлен по умолчанию в теле письма, как мне для этого инпута указать ссылку к файлу ?
0
12 / 12 / 3
Регистрация: 17.03.2014
Сообщений: 75
09.04.2014, 17:52 4
Вот редирект на страницу index.php, если нужен header("Location: index.php"); Еще как вариант echo'<script type="text/javascript"> location.replace("http://proektant.pro");</script>'; с файлами у меня плохо и возможно мой ответ совсем не то что вам нужно, но ссылка на input к файлу. <a href=""><input type='hidden' name=''"></a>

Добавлено через 6 минут
Все, извините за тупость. Это на javascript можно сделать.
0
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
10.06.2015, 00:15 5
Господа! Будьте так любезны, помогите!!!
Собственно, нашел в Нете эту же самую форму, что и у ТС.
Она не отправляет НИЧЕГО!!! Пробовал на Яндекс послать, пробовал на Гмайл послать - ничего. Молчанье ночи темной...
Ошибок не выдает, но не отправляет.
В чем может быть дело???

Добавлено через 5 минут
Комрады! Ерунда вышла. Отправляет.. Наверно, с сервисом что0то было
Тока файл (любой) приходит в названием file.ext. Как сделать так, чтобы файл приходил в оргинальном названии???
Спасибо.
0
10.06.2015, 00:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2015, 00:15
Помогаю со студенческими работами здесь

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

Отправка mail сообщений с вложением файлов
Чтобы отправлять сообщения о новом клиенте на почту, использую следующий код: 1) HTML &lt;input...

Отправка письма с вложением на почту SMTP
Добрый день. Просьба помочь со следующей проблемой: &lt;?php function show_form() { ?&gt;...

Массовая отправка сообщений с вложением через SMTP сервер
Всем привет. Ребят, подскажите пожалуйста, в чем ошибка? Есть самописные форма и обработчик формы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru