Не работает отправка файла в FormItAutoResponder

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

Вызов FormIt:
[[!AjaxForm?
        	&snippet=`FormIt`
        	&form=`tpl.forma.calc`
        	&hooks=`FormItAutoResponder`
        	&fiarTpl=`emailcl_tpl_calk`
        	&fiarSubject=`Тест ответного письма кальулятора`
        	&fiarFrom=`test@test.ru`
        	&fiarFromName=`ООО Сельхозлидер`
        	&fiarCC=`test@test.ru`
        	&fiarFiles=`/public_html/selhozlider.ru/IMG_1035.JPG`
]]

Форма для заполнения:
<form action="[[~[[*id]]]]" method="post" class="calc-form" id="calc_action" enctype="multipart/form-data">
    
    <div class="calc-group">
        <label class="calc-label" for="af_name_calc">Имя<span class="required">*</span></label>
        <div class="calc-control">
            <input id="af_name_calc" class="calc-form" name="name" value="[[!+fi.af_name_calc]]" placeholder="" type="text">
            <span class="error_name"></span>
        </div>
    </div>

    <div class="calc-group">
        <label class="calc-label" for="af_tel_calc">Телефон<span class="required">*</span></label>
        <div class="calc-controls">
            <input id="af_tel_calc" class="calc-form input-phone" name="tel" value="[[!+fi.af_tel_calc]]" placeholder="" type="text">
            <span class="error_email"></span>
        </div>
    </div>
    <div class="calc-group">
        <label class="calc-label" for="af_email_calc">E-mail<span class="required">*</span></label>
        <div class="calc-controls">
            <input id="af_email_calc" class="calc-form" name="email" value="[[!+fi.af_email_calc]]" placeholder="" type="email">
            <span class="error_email"></span>
        </div>
    </div>
    <div class="calc-group">
        <div class="calc-controls checkbox">
            <label for="policy" class="calc-policy">Нажимая на кнопку, Вы соглашаетесь с нашей 
 <a href="/assets/files/policy.pdf" target="_blank">политикой конфиденциальности</a></label>
        </div>
    </div>

    <div class="calc-group">
        <div class="calc-controls">
            <button type="submit" class="calc-btn">Получить расчёт</button>
            <div class="clearfix"></div>
        </div>
    </div>
            <input name="calc_action" value="" type="hidden">
            <input name="tip_zavoda" value="Расчёт стоимости пекарни с объемом производства 3000 килограмм в день (оборудование без помещения)" type="hidden">
-->

Шаблон письма:

Здравствуйте, [[+name]]
Вы заказали "[[+tip_zavoda]]", который находится в прикреплённом PDF файле
В течении двух рабочих дней, наш менеджер с Вами свяжется.



Ваши контактные данные:
  1. Телефон: [[+tel]]
  2. E-mail: [[+email]]
Сергей
03 июля 2018, 20:39
modx.pro
1 630
0

Комментарии: 2

Aleksandr Huz
04 июля 2018, 10:07
1
+1
Мое решение:
1. В форму вставляем скрытое поле с файлом
<input type="hidden" name="attach_file" value="IMG_1035.JPG" />

2. Удаляем хук email

3. Добавляем свой хук (email_file)
<?php
$pdo = $modx->getService('pdoTools');
$siteName = $modx->getOption('site_name');
$emailsender = $modx->getOption('emailsender');
$emailTo = $modx->getOption('emailTo', $scriptProperties, $emailsender, true);
$fields = $hook->getValues(); 
$message = $pdo->getChunk('email', $fields);
$subject = $modx->getOption('emailSubject', $scriptProperties, $siteName, true);

$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY, $message);
$modx->mail->set(modMail::MAIL_FROM, $emailsender);
$modx->mail->set(modMail::MAIL_FROM_NAME, $siteName);
$modx->mail->set(modMail::MAIL_SUBJECT, $subject);
$modx->mail->address('to', $emailTo);
$modx->mail->address('reply-to', $emailsender);
if(!empty($fields['attach_file'])) {
    $modx->mail->attach($modx->getOption('base_path').$fields['attach_file']);
}
$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;
    Сергей
    07 июля 2018, 20:14
    0
    Большое спасибо, Ваш комментарий помог решить проблему. Правда, с помощью предложенного хука как-то странно формируется письмо, но я с копировал часть с файлом в действующий хук и помогло. Спасибо.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2