Задать вопрос
@Vladimir185

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

У меня успешно отправляется форма без файла:

const formData = {
        name: this.name,
        phone: this.phone,
        file: this.file,
        carTitle: this.carTitle,
        carModel: this.carModel,
        carYear: this.carYear,
        carEngine: this.carEngine,
        carEngineVolume: this.carEngineVolume,
        carMileage: this.carMileage,
        question: this.question,
      };
      const data = toFormData(formData);
      fetch(`${SITE_DOMEN}/mail.php`, {
        method: "POST",
        body: data,
      })

метод toFormData просто пробегается по объекту, создает new FormData и делает append.
php обработчик:
<?php

$recepient = "test@gmail.com";
$siteName = "Sitename";

$name = trim($_POST["name"]);
$phone = trim($_POST["phone"]);
$file = trim($_POST["file"]);
$carTitle = trim($_POST["carTitle"]);
$carModel = trim($_POST["carModel"]);
$carYear = trim($_POST["carYear"]);
$carEngine = trim($_POST["carEngine"]);
$carEngineVolume = trim($_POST["carEngineVolume"]);
$carMileage = trim($_POST["carMileage"]);
$question = trim($_POST["question"]);

$message = "
Имя: $name \n
Телефон: $phone
Файл: $file \n
Марка: $carTitle \n
Модель: $carModel \n
Год: $carYear \n
Двигатель: $carEngine \n
Объём: $carEngineVolume \n
Пробег: $carMileage \n
Вопрос: $question \n
";

$pagetitle = "Заявка с сайта \"$siteName\"";
mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient");

Все работает, кроме файла. В файле значение this.$refs.fileLoadInput.files[0];
В общем оно не пустое, но на почту ничего не приходит. Я еще попробовал к методу fetch добавить
headers: {
          "Content-Type": "multipart/form-data",
        },

но тогда на почту пришло вовсе все пустое. Как мне отправлять файл?
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

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