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

Как отправлять файл с сайта на почту?

08.03.2017, 02:53. Показов 4894. Ответов 1

Author24 — интернет-сервис помощи студентам
Форма на сайте
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    <form action="post.php" method="post" enctype="multipart/form-data">
        <input type="text" id="onetree" name="name" placeholder="ИМЯ">
        <input type="text" id="onetree" name="famel" placeholder="ФАМИЛИЯ">
        <input type="text" id="onetree" name="oth" placeholder="ОТЧЕСТВО">
        <br>
 
        <input type="text" id="onetwoo" name="email" placeholder="E-MAIL ПОЧТА">
        <input type="text" id="onetwoo" name="phone" placeholder="НОМЕР ТЕЛЕФОНА">
        <br>
 
        <label>Пожалуйста, прикрепите заполненый бриф:</label><br>
        <input name="mail_file"  id="fileset" value="1" size="40" type="file"> 
        <input type="submit" id="submitbutt" value="ОТПРАВИТЬ ЗАЯВКУ">
    </form>
PHP файл отправки post.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
<?php
$name = $_POST['name'];
$name = htmlspecialchars($name);
$name = urldecode($name);
$name = trim($name);
 
$famel = $_POST['famel'];
$famel = htmlspecialchars($famel);
$famel = urldecode($famel);
$famel = trim($famel);
 
$oth = $_POST['oth'];
$oth = htmlspecialchars($oth);
$oth = urldecode($oth);
$oth = trim($oth);
 
 
$email = $_POST['email'];
$email = htmlspecialchars($email);
$email = urldecode($email);
$email = trim($email);
 
$phone = $_POST['phone'];
$phone = htmlspecialchars($phone);
$phone = urldecode($phone);
$phone = trim($phone);
 
if (mail("сюдаотправить@gmail.com", "Заявка с Webenot студии", "Имя:".$name.". Фамилия: ".$famel.". Отчество: ".$oth.". E-mail: ".$email.". Мобильный номер: ".$phone. "File : " ,"From: почтасайта \r\n"))
 {     echo "сообщение успешно отправлено";
} else {
    echo "при отправке сообщения возникли ошибки";
}
?>
Тут все хорошо работает!

Пытался понять, как же отправить файл fileset, к сожалению так и не понял. Помогите понять, как же это работает.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2017, 02:53
Ответы с готовыми решениями:

Как отправлять почту с сайта?
Здравствуйте! Наконец-то дошли руки, чтобы заняться вопросом, который давно откладывал, -...

Как в Либре отправлять файл в интернет: на почту, хранилище?
Можно ли так, по-моему видел такую опцию только забыл где именно!

Можно ли с JavaScript отправлять почту с сайта?
Народ! Расскажите неграмотным, можно ли с JavaScript отправлять почту с сайта, не применяя при...

Как почту отправлять из VB?!
Дайте исходник, жылательно без нaворотов!

1
585 / 488 / 371
Регистрация: 05.11.2013
Сообщений: 1,265
Записей в блоге: 6
09.03.2017, 07:55 2
Чтобы отправить файл вложением, сформируй нужные заголовки, у меня работало так:
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
function send_mail($mail_to, $thema, $msg, $path) { 
 // Вспомогательная функция для отправки почтового сообщения с вложением
 // Параметры - адрес получателя, тема письма, текст письма, путь к загруженному файлу
 if ($path) {  
  $fp = fopen($path,"rb");   
  if (!$fp) { print "Cannot open file"; exit(); }   
  $file = fread($fp, filesize($path));   
  fclose($fp);   
 }  
 $name = basename($path); // в этой переменной надо сформировать имя файла (без пути)  
 $EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
 $boundary     = "--".md5(uniqid(time()));  // любая строка, которой не будет ниже в потоке данных.  
 $headers    = "MIME-Version: 1.0;$EOL";   
 $headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  
 $headers   .= "From: admin@mail.com";  
 $multipart  = "--$boundary$EOL";
 $multipart .= "------------".$bondary."\nContent-Type:text/html;\n";
 $multipart .= "Content-Transfer-Encoding: 8bit\n\n$msg\n\n";
 $multipart .= $EOL; // раздел между заголовками и телом 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)) { //если не письмо не отправлено
  return false;           
 }  
 else { // если письмо отправлено
  return true;  
 }  
 exit;  
}
и примерно такой вызов
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$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['subject']; //Тема письма
 $msg = $_POST['message']; //Текст сообщения
 $mail_to = $_POST['mail_to']; //Адрес получателя
// Отправляем почтовое сообщение 
 if(empty($picture)) mail($mail_to, $thm, $msg); 
 else send_mail($mail_to, $thm, $msg, $picture);
0
09.03.2017, 07:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2017, 07:55
Помогаю со студенческими работами здесь

Как отправлять почту через PHP?
Добрый день! Хочу сделать систему авторизации с возможностью регистрации на сайте. Как сделать...

Как почту с помощью cgi отправлять?
Короче мой хВостинг судя пов сем не дает отправить почту с помощью phpmailer. А может быть есть...

Как отправлять почту со многих сайтов
Подскажите пожалуйста, как реализовать такую задачу: На win2k сервере хоститься около 20 сайтов,...

Как отправить файл на сервер сайта или на почту?
Всем привет, помогите решить вопрос как отправить файл на сервер сайта или же на почту. Потратил...


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

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