Qairat
@Qairat
frontend developer, angular 2+

Как отправить фото с mail php?

Всем привет!
Сделал отправку письма без вложении через функцию mail();
Теперь не могу отправить вместе с ними фото.

Код у меня такой, это html:
<input type="text" id="name" class="form-control" placeholder="Имя">
<input type="text" id="phone" class="form-control" placeholder="Номер телефона">
<textarea class="form-control" id="text" cols="30" rows="10" placeholder="Комментарии(необязательно)"></textarea>
<input type="file" id="r_file">
<a onclick="sendRequest()"> <button>Отправить заявку</button></a>

Вот так через id беру все значения и проверяю в скрипте так:
function sendRequest(){
			if(myTrim($("#name").val()).length < 1 || myTrim($("#phone").val()).length < 1){
				alert("Заполните поля Имя и Номер!");
				return false;
			}
			else{
				str = "Имя: " + $("#name").val() + "<br>";
				str += "Телефон: " + $("#phone").val() + "<br>";
				str += "Текст: " + $("#text").val() + "<br>";
				str += "Фото: " + $("#r_file").val() + "<br>";
				sendMail(str);
			}
		}

Дальше отправляю вот так

function sendMail(message) {
			 var rq = getAjax();

			 if (rq) {
				 try {
					 rq.open('GET', 'mail.php?m=' + encodeURIComponent(message) + '&d=' + new Date().getTime().toString(), true);

					 rq.onreadystatechange = function () {
						 if (this.readyState === 4) {
							 if (this.status >= 400) {
								 alert("Ошибка при отправке почты");
								 return;
							 }
						 }
					 };
					 rq.send(null);
					 alert("Ваше письмо успешно отправлено");
				 } catch (fail) {
					 alert("Ошибка при отправке почты");
				 }
			 } else {
				 alert("Ошибка при отправке почты");
			 }
		}

И все это отправляется в mail.php
$to = 'k.batyrbayev@gmail.com';
$subject = "Новая Заявка";
$message = $_GET['m'] . "<br>";
$headers = "Content-Type: text/html; charset=utf-8\n";
$headers .= "From: k.batyrbayev@gmail.com" . "\r\n ";
mail($to,$subject,$message,$headers);

Фото приходить просто как текст.
Не могу отправить фото как фото, помогите как сделать?
Куда что написать?
  • Вопрос задан
  • 519 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Quieteroks
php программист
Мне кажется у вас проблема еще на этапе отправки запроса на сервер. Вы либо отправляете только название файла, либо вы его содержимое в текстовом виде. Какой же вы в этом случае хотите получить результат?

И дальше вы отправляете текст, даже если вы его обозначили как html, в нем нет картинки как таковой.

Вам нужно отправлять форму на php с файлам. И уже на стороне php формировать текст письма и прикреплять изображение. И к сожалению это не так просто, как Вы пишите. Письмо - это отдельная история, требующая знания спецификации и кучи заголовков.

1. Возьмите сразу на вооружение PHPMailer.
2. Почитайте про передачу файла из формы на php и проверку файла перед сохранением, а уж тем более перед отправкой. Вы же не можете предсказать, что за файл в итоге имеется. Конечно если скрипт не для личного использования исключительно.
3. Почитайте как вложить файл в текст письма, а не как вложение на примере PHPMailer.
Ответ написан
Комментировать
@Formula_1
Легче всего это использовать PHPMailer, у него есть метод "AddAttachment", вот им и отправляется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы