mr.rifa
6/4/2018 - 8:39 AM

Отправка письма с вложенным файлом

Вложение файлов в письма. Поле с формы.

Заодно убираем зацикливание обработчика события

AddEventHandler('main', 'OnBeforeEventAdd', Array("MyForm", "my_OnBeforeEventSend"));
class MyForm {
    protected static $handlerDisallow = false;

    public static function my_OnBeforeEventSend(&$event, &$lid, &$arFields, &$message_id, &$files, &$languageId) {
        /* проверяем, что обработчик уже запущен */
        if (self::$handlerDisallow)
            return;

        if ( isset( $arFields['RS_FORM_ID'] ) && !empty( $arFields['RS_FORM_ID'] ) ) {
            if (self::$handlerDisallow)
                return;

            /* взводим флаг запуска */
            self::$handlerDisallow = true;

            $arAnswer = CFormResult::GetDataByID( $arFields[RS_RESULT_ID], array( "PHOTO" ), $arResult, $arAnswer2 );
            if ( $arAnswer[PHOTO][0][ANSWER_ID] ) {
                $arGetFileByAnswerID = CFormResult::GetFileByAnswerID( $arFields[RS_RESULT_ID], $arAnswer[PHOTO][0][ANSWER_ID] );
                if ( !empty( $arGetFileByAnswerID[USER_FILE_ID] ) && $arGetFileByAnswerID[USER_FILE_ID] > 0 ) {
                    CEvent::Send($event, $lid, $arFields, "Y", $message_id, array( $arGetFileByAnswerID[USER_FILE_ID] ) );
                    $lid = NULL;
                }
            }

            /* вновь разрешаем запускать обработчик */
            self::$handlerDisallow = false;
        }
    }
}