Php mail - лист з кількома вкладеннями файлів, multiple attachments, labdes

Якщо перед вами стоїть завдання зробити відправку листа з можливістю прикріпити декілька файлів, то в цьому немає нічого складного і в даному прикладі ми розберемо що до чого, і як це реалізувати за допомогою функції mail без всяких бібліотек.

І так, для того щоб запулить лист з вкладеннями то нам потрібно правильно прописати заголовки листи, і наскільки я розібрався в темі то в цих же заголовках і передаються прикріплені наші файли. Давайте почнемо з функції яка буде безпосередньо відправляти лист з файлами. Я її чесно знайшов ось тут. за що хлопцям велике спасибі.

Тут все начебто майже просто. Ми повинні передати необхідні значення у вигляді, від кого, кому, тему листа, текст повідомлення і шлях до нашого файлу або файлів якщо їх декілька. Усередині функції в циклі проганяється масив з файлами і формується шлях до наших файлів, яким ми попередньо залили на сервер.

Тепер сама форма з текстом і іншими пляшками. Поля можуть бути якими завгодно, для нас головне поле input = file у якого повинен стояти атрибут multiple дозволяє вибирати декілька файлів, або можна зробити кілька полів з input = file але головне щоб у них було name однакове. І у всіх випадках name має бути з дужками в кінці дає зрозуміти скрипту, що у нас масив а не поодинокий файл, наприклад name = myfile [].

Нагадую вам, що всі отримувані дані повинні вами перевірятися.

Залишилося заповнити наші змінні для передачі:

Змінну From я чомусь у себе обізвав як email:

Повідомлення - $ message - будь-який текст, або просто статичний текст або переданий текст через форму.

Іноді потрібно зробити конвертацію тексту, тоді можна зробити так:

Тепер самі заголовки. У мене чомусь саме mail.ru і тільки він все листи приймав в крякозябри. Довелося проганяти текст теми листа в такий спосіб:

Ну і відправляємо. Якщо була відправка без файлів, то відправляємо найпростішої функцією без вишукувань:

Фінальна відправка якщо були передані файли: