Отправка файла из формы html с помощью Laravel -Mailgun API - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь отправить файл, выбранный пользователем через форму HTML, и отправить его как вложение электронной почты с помощью Mailgun. Я не хочу хранить этот файл где-либо на моем сервере. Мне нужно иметь возможность загружать все виды файлов (png, pdf, word ...).

Это то, что я пробовал до сих пор.

Внешний вид выглядит так:

HTML

<label>
       Click to attach file...
       <input type="file" id="file" ref="file" v-on:change="handleFileUpload" name="fileToUpload">
</label>

Скрипт (VueJS)

let formData = new FormData();

formData.append('file', this.welcomeMail.attachment);


axios
.post('/admin/customersV2/sendWelcomeMail',formData,
{
    headers: {
           'Content-Type': 'multipart/form-data'
    }
})

Backend (php - Laravel) выглядит так:

$mgClient->messages()->send($domain,
    array('from'    => env('MAIL_FROM_ADDRESS'),
        'to'      => $request->emailAddress,
        'cc' => env('MAIL_CC'),
        'subject' => 'Greetings',
        'template'    => 'welcome-template',
        'attachment' => [
            [
                'filePath' => $request->file->path(),
                'fileName' => 'Attachment'
            ]
        ],
        'h:X-Mailgun-Variables'    => $mailgunVariables)

Но в моем письме вложение пустое (см. Снимок экрана ниже):

enter image description here

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 19 июня 2020

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

    $mgClient->messages()->send($domain,
        array('from'    => env('MAIL_FROM_ADDRESS'),
            'to'      => $request->emailAddress,
            'cc' => env('MAIL_CC'),
            'subject' => 'Greetings from Eatology',
            'template'    => 'welcome-template',
            'attachment' => [
                [
                    'fileContent' => file_get_contents($request->file('file')),
                    'filename' => 'attachment.' . $request->file('file')->extension()
                ]
            ],
            'h:X-Mailgun-Variables'    => $mailgunVariables)
    );
...