PHP-почта с вложениями

Я пытаюсь сделать форму, которая отправляет мне почту.

Это содержимое html файла.

<form method="post" action="email.php" enctype="multipart/form-data">


 

 </form>

и это файл php.

Дело в том, что сообщение file type not allowed. Но я загрузил файл.png, поэтому я не знаю, в чем проблема.

Не могли бы вы мне помочь? Я часто на это наведывался :(

3 ответа

Фактически у вас есть

$file_name = $FILES['attachment']['name']; 
$temp_name = $FILES['attachment']['tmp_name']; 
$file_type = $FILES['attachment']['type'];

должен быть

$file_name = $_FILES['attachment']['name']; 
$temp_name = $_FILES['attachment']['tmp_name']; 
$file_type = $_FILES['attachment']['type'];

и он отлично работает :))


Кроме того, убедитесь, что вашему заголовку Content-Type для вашего вложения изображения назначен правильный MIME-тип, то есть image/png для .png файла. Указывает эту вики на список типов изображений MIME.


Вы превышаете размер строки в substr(), поэтому ваш $extension неправильный.

Для a.pdf; strlen($base) - 5; поэтому конечный индекс равен 4. Поэтому ваш третий параметр должен быть strlen($base) - 1 вместо strlen($base).

Измените строку следующим образом:

$extension = substr($base, strlen($base) - 4, strlen($base) - 1);

Я думаю, что этот подход еще лучше:

$extension = substr($base, strrpos($base, ".")-1);

Это даст вам последнее . символ и остальную часть строки, а также расширение файла.

Демо.

licensed under cc by-sa 3.0 with attribution.