Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 19.08.2013
Сообщений: 150
1

Отправка писем с вложениями на почту без "костылей"

26.08.2016, 00:43. Просмотров 537. Ответов 2
Метки нет (Все метки)


Здравствуйте. Несколько лет назад один человек мне помог с формой отправки файлов на почту. Выглядела она довольно просто:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
    $subject = "Заголовок";
    $mailto = "exam@gmail.com"; // кому отправляем
    $message = "Текст сообщения";
    $separator = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$separator}x";
    $eol = PHP_EOL;
    $filesize = '';
 
   
    // Заголовки
    $headers = 'From: от кого example@m.ru' . $eol;
    $headers .= 'MIME-Version: 1.0' . $eol;
    $headers .= 'Content-Type: multipart/mixed; boundary=' . $separator . $eol . $eol;
    $headers .= 'Content-Transfer-Encoding: 7bit' . $eol;
    $headers .= 'This is a MIME encoded message.' . $eol . $eol;
   
    // Сообщение
    $headers .= '--' . $separator . $eol;
    $headers .= 'Content-Type: text/plain; charset=utf-8' . $eol;
    $headers .= 'Content-Transfer-Encoding: 8bit' . $eol . $eol;
    $headers .= $message . $eol . $eol;
   
    // Прикрепляем файлы
    $files = $_FILES['fileFF'];
    for($i = 0; $i < count($files['name']); $i++) {
        if(is_uploaded_file($files['tmp_name'][$i])) {
            $file = $files['tmp_name'][$i];
            $filename = $files['name'][$i];
            $filetype = $files['type'][$i];
            $filesize += $files['size'][$i];
           
            $content = chunk_split(base64_encode(file_get_contents($file)));
            $headers .= '--' . $separator . $eol;
            $headers .= 'Content-Type: '.$filetype.'; name=' . $filename . $eol;
            $headers .= 'Content-Transfer-Encoding: base64' . $eol;
            $headers .= 'Content-Disposition: attachment; filename=' . $filename . $eol . $eol;
            $headers .= $content . $eol . $eol;
            $headers .= '--' . $mime_boundary . $eol;
           
        }
    }  
    // Отправка сообщения
if (mail($mailto, $subject, '', $headers)){
echo 'ok';
} else {
echo 'error';
}
И всё это работало до пары, до времени, пока не обновился php. Теперь в новых php использовать $eol нельзя (и еще много чего нельзя), ибо ничего не отправиться. Так как я прикреплении файлов в последнее время особо не нуждался, я просто нашел где-то простую форму, которая работала на последних php.
PHP
1
2
3
4
5
6
7
8
9
10
11
$to      = 'komu';
$subject = 'заголовок';
$message = "text";
$headers = 'From: exam@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
 
if(mail($to, $subject, $message, $headers)){
    echo "ok";
} else {
    echo "error";
}
Теперь у меня вновь появилась нужда в отправке файлов. Поискав в сети простых форм, я был удивлён, так как одна форма была "лучше" другой. Какие-то костыли, какие-то лишние php файлы, какой-то php mail'er. зачем всё? - непонятно. Подскажите, что к моей простой форме нужно дописать, чтобы работала функция отправки файлов на почту? Пожалуйста не нужно предлагать phpmailer и им подобные. Это всё костыли
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2016, 00:43
Ответы с готовыми решениями:

Отправка писем с вложениями
Добрый день. На сайте в коде есть функция, которая отправляет письма с вложениями (файл xls и файл...

Отправка писем с вложениями через EWS
Доброго времени суток! Уже длительное время бьюсь в попытках разрешить эту проблему. Буду просто...

Отправка писем с Exchange c "MAIL FROM:<> "
Здравствуйте, возможно если кто-то не читал мою предыдущую тему, начну издалека : стали долго...

Отправка письма на почту программой: "Время ожидания истекло"
Здравствуйте) пытаюсь отправить письмо на яндекс почту, но после долгого зависания программа...

2
Para bellum
26.08.2016, 06:32
  #2

Не по теме:

Цитата Сообщение от drkrol Посмотреть сообщение
phpmailer и им подобные. Это всё костыли
Мощно. Конгениально!
Тогда BMW или Мерседес -- тоже костыли. Можно же на конях ездить.

0
Эксперт PHP
3560 / 2984 / 1254
Регистрация: 01.08.2012
Сообщений: 10,242
26.08.2016, 07:33 3
Цитата Сообщение от drkrol Посмотреть сообщение
Это всё костыли
Т.е. писать своё криворукое немасштабируемое решение - это нормально, а использовать распространённую удобную библиотеку с большим функционалом - костыль? Глупости говорите.
Цитата Сообщение от drkrol Посмотреть сообщение
использовать $eol нельзя
С чего вы это взяли?
Цитата Сообщение от drkrol Посмотреть сообщение
Подскажите, что к моей простой форме нужно дописать, чтобы работала функция отправки файлов на почту?
Лучше опишите, что с предыдущей формой не так. Какие ошибки показывает и т.п.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2016, 07:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Отправка писем на почту
idsmtp2.Host:='smpt.yandex.ru'; idsmtp2.Host:= IntToStr(25); idsmtp2.Username:='*******';...

Калькулятор для работы с знаками "+" "-" "/" "*" через string без приоритетов
Нужно написать калькулятор для работы с знаками &quot;+&quot; &quot;-&quot; &quot;/&quot; &quot;*&quot; через string. Приоритеты действий...

Не работает отправка писем на почту
Здравствуйте! Проблема в том, что по какой-то причине программа не хочет оправлять письмо! Вот...

Не рабтает отправка писем на почту
Здравтсвуйте. Столкнулся с такой проблемой. Необходимо по клику высылать данные из формы на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.