Не приходит на почту файлы большого размера

Есть такой сниппет
$fields = $hook->getValues(); //поля из формы
$NF = $fields['filesToUpload'];//получаем имя и путь загруженного файла
$fields['filesToUpload'] = str_replace('assets/pdf/','',$fields['filesToUpload']);
$mail_z = $fields['contact_email'];
$message = $modx->getChunk('sentEmailTpl', $fields);

//формируем PDF
$pdo = $modx->getService('pdoFetch'); 
$pdfTpl = <a name="cut"></a>  $modx->getOption('pdfTpl', $formit->config, '', true);
$content = $pdo->getChunk($pdfTpl, $fields);

$config = array();
$config = array_merge($config, $fields, array(
    'content' => $content,
    'author' => $author,
    'title' => $title,
));
// формируем ссылку на PDF
$result = $modx->runSnippet('PdfCreate', $config);
 
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY, $message);
$modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
$modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));
$modx->mail->set(modMail::MAIL_SUBJECT, 'Поступила заявка с сайта');
$modx->mail->address('to', $mail_z);
$modx->mail->address('reply-to', $modx->getOption('emailsender'));
$modx->mail->attach($modx->getOption('base_path').'assets/pdf/'.$result.'.pdf');
$modx->mail->attach($modx->getOption('base_path').$NF);
$modx->mail->setHTML(true);

if (!$modx->mail->send()) {
  $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
}

$modx->mail->reset();

return true;


Он используется FormIT для отправки на почту pdf версии формы и приложенного к ней файла. Все работает отлично пока файл небольшого размера, до 1 мб точно проверял, но скажем если приложить файл размером 8 мб то ничего не происходит. FormIt говорит о успешной отправке формы, в папку закачивается прикладываемый файл, но на почту ничего не приходит.
Максимальный размер загружаемого файла в php, более 15 мб и в MODx тоже. Собственно, иначе файл не загружался бы на сервер.
В чем может быть проблема и куда копать?

9 комментариев

avatar
Здесь нет никакой проблемы, у почтового сервера может быть ограничение на размер письма.
avatar
А не подскажите как узнать есть ли эти ограничения?
VPS на Debian, судя по всему почтовый сервер postfix, в /etc/postfix/main.cf message_size_limit не установлена
avatar
С почтовыми серверами могут быть проблемы (точнее не проблемы, а настройки) на принимающей стороне. И на принимающей стороне могут быть стоять ограничения на размер. У разных серверов ограничения могут быть разные. Например лет десять назад у многих серверов стояло ограничение на 2Мб.
avatar
Об этом я подумал, но принимающая сторона эта это 2 почтовых ящика на yandex и gmail. Вроде и там и так лимит по аттачам 25 мб.
И мне кажется если проблема в принимающей стороне то само письмо дойдет, просто вложения не будет?
avatar
Нет письмо не придет. Опять не правильно объясняю. Письмо придет, но сервер может его отбросить по размеру. И да вложения вроде как по стандарту кодируются Base64, то есть размер еще увеличивается. Когда ты отправляешь письмо через морду mail.ru (яндекс, гугл) то появляется ссылка — размер файла большой, загрузить его на майл/яндекс/гугл диск и человек в вебморде соглашается.
avatar
через мыло я не пробовал, а через гугл много посылал файлов — до 25 мб они реально прикладываются к письму, не на гуглдрайв загружаются, а аттачем.
сейчас специально проверил — послал архив 10мб с яндекса на гугл — все ок.
avatar
Необходимо смотреть логи почтового сервера, если конечно вы отправляете через свой локальный почтовик, а не через smtp.
Точно не скажу, надо проверять — может быть такая ситуация что pdf файл еще не готов к отправке?
avatar
Точно не скажу, надо проверять — может быть такая ситуация что pdf файл еще не готов к отправке?
маловероятно. я пока тестил, несколько десятков писем оправил — все дошли, кроме 2 в которых были большие аттачи.
логами понял, надеялся на более простое решение( попробую, просто я почтовый сервер лет 7 настраивал, уже ничего не помню что там и где, до этого все работало нормально.
avatar
в итоге помогло указание в явном виде параметра и лимита в message_size_limit=20480000. видимо где-то дефолтный параметр все-таки зашит.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.