На почту не приходят файлы более ~10мб из Contact Form 7. Поможете?
Перечитал все похожие проблемы на мою, но ответа не нашел, да по сути и проблемы такой же как у меня не нашел.
Сделано: составлена форма в плагине Contact Form 7 + MultiLine files for Contact Form 7 для отправки сообщений с файлами.
Лимит в форме указан 250мб ( [multilinefile* multilinefile-1001 limit:25000000 filetypes:jpg|jpeg|png|pdf|mp4|MPEG-TS|M4V|MOV|avi "загрузить"] ) тег multilinefile-1001 установлен в поле "Прикреплённые файлы" шаблона письма.
На сервере стоят значения: max_execution_time 300, max_input_time 180, max_input_vars 1000, memory_limit 2048м, post_max_size 250м, upload_max_filesize 250м.
Как работает: письмо с прикрепленным файлом до 10мб или несколько файлом каждый весом не более 10мб, но общим объемом более 10мб приходит на почту с этими файлами благополучно. Но если прикрепить файл весом более 10мб, то письмо приходит без вложенного файла.
Понимаю, что где то стоит скрытое ограничение на объем одного файла. Но где еще оно может быть?
Выше писал, что в настройках плагина и на сервере стоит лимит на загрузку файлов не меньше 250мб.
Дополнительно:
Не думаю что так, .т.к. на этот же ящик я могу отправить письмо с другого ящика и свободно приложить файл на 20-30мб и оно приходит.
Я писал, что несколько файлов общим объемом 20-30мб приходят (архивом), а вот один файл к примеру 16мб, не приходит.
Ответы:
Ограничение на стороне почтового сервера
- Сделал ящик почтовый на том же сервере, что и сам сайт находиться. Отправляю туда. Такой же результат.
Я бы попробовал простенький тест.
1) Попробуйте в настройках отправки почты вашего плагина прописать настройки smtp сервера какого-нибудь бесплатного почтовика. Например, Яндекса.
Если дойдет с вложением - дело в почтовом сервере, без вложения - в плагине.
2) Альтернативный вариант. Создайте php файл, из которого отправьте письмо с вложением через ваш почтовый сервер.
Через какой-нибудь PHPMailer или чистый PHP, неважно.
Если дойдет с вложением - дело в плагине, без вложения - в почтовом сервере.
Первым дело смотри в настройках php лимиты.
И логи сервера.
- Я в описании проблемы писал какие стоят лимиты. Все в допусках.
- Кирилл, посмотри-покажи скрин лимитов в здоровье сайта.
- Refguser,
- Кирилл, ок. тогда вторая часть моего ответа - смотри логи.
Можешь поставить плагин логгирования почты и посмотреть что он покажет. Если ошибок не будет проблема на приёмной стороне.А PHP time limit не стоит ставить в 0. Поставь 120сек например.
- Refguser, в cpanel не нашел настройки PHP time limit
- max_execution_time стоит 300, но в сводке сайта не отображается
- Кирилл, не там смотришь. Где оно в Спанели - не подскажу.
Но этот параметр не должен влиять на почту. Это ограничение времени выполнения php-скрипта. Если он слишком долго работает, то его нужно остановить иначе всё умрёт, тк php однопоточный. А у тебя там бесконечность. - Refguser, Проверил файлы PHP.ini, .htaccess в них стоит значение max_execution_time = 300
Не понимаю почему сайт показывает ноль
Отправлять через почту что-то тяжелее N мегабайт - очень плохая идея.
Ограничения могут быть где угодно, как на отправляющем сервере, так и на принимающем.
Всем спасибо.
Проблема не решилась.
Ушел от нее путем сохранения файла на сервере, в письмо приходит только ссылка на файл.
- Правильно. Почта это не про файлообмен большими файлами. Максимум пдф-ки слать.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


Файлы больше 10 МБ через Contact Form 7 могут не доходить по нескольким причинам одновременно. Лимит в самой форме — это только один слой. Есть ещё лимиты PHP, веб-сервера, почтового сервера, хостинга и ограничения вложений у получателя.
Проверьте минимум эти параметры:
upload_max_filesize = 256M post_max_size = 256M max_execution_time = 300 max_input_time = 300 memory_limit = 512M
Для Nginx дополнительно:
client_max_body_size 256M;
Но даже если форма примет файл 250 МБ, отправлять его почтой — плохая идея. Почтовые серверы часто режут вложения на 10-25 МБ. Кроме того, вложение кодируется base64 и становится примерно на треть больше. Файл 20 МБ может превратиться в письмо около 27 МБ.
Правильная архитектура для больших файлов:
Если нужно быстро проверить, где ограничение, сделайте тесты с файлами 5, 10, 20 и 50 МБ. Если форма отправляется, но письма нет — ограничение на почте. Если форма падает до отправки — PHP/Nginx/хостинг. Если в логах CF7 ошибка mail failed — смотрите SMTP и лимиты почтового сервера.
Итог: не пытайтесь отправлять 250 МБ вложением. Для больших файлов используйте загрузку на сервер и отправку ссылки. А PHP/Nginx лимиты всё равно нужно поднять, чтобы форма могла принять файл.