Авторизация

Отправка письма с вложением UMI CMS API

Отправка письма с вложением картинки или файла и капчей на api UMI CMS. Подходит для редакции UMI Lite, так как в ней нет модуля для создания форм.
Идиально подайдёт там, где нужно сделать форму побыстрее, с прикреплением файла или капчи.

По мимо этого понадобится создать заголовок для страницы, как это сделать читать подробнее

public function send(){
    $fio = htmlspecialchars(getRequest('name'));
    $phone = preg_match('|^[0-9\,\;\ ]*$|', htmlspecialchars(getRequest('phone')) ) ? htmlspecialchars(getRequest('phone')) : '';
    $email = htmlspecialchars(getRequest('email'));
    $comments = htmlspecialchars(getRequest('comments'));
    
    if (!umiCaptcha::checkCaptcha()) {
        def_module::errorNewMessage("% errors_wrong_captcha%");
        def_module::errorPanic();
    }
    
    $collection = domainsCollection::getInstance();
    $domain = $collection->getDefaultDomain()->getHost();
    
$message = <<<END
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Посетитель сайта {$domain} заполнил форму 'Оставить заявку'</title>
</head>
<body>
<h4>Посетитель сайта {$domain} заполнил форму 'Оставить заявку'</h4>
Имя Фамилия: {$fio}<br>
Телефон: {$phone}<br>
Email: {$email}<br>
Комментарий: {$comments}
</body>
</html>
END;
	
    $oMail = new umiMail();
    
    // загружаем картинку из временной папки в $folder_temp и прикрепляем её к письму
    $folder_temp = "./images/.umimail_files_uploads_temp";
    $umiDir = new umiDirectory($folder_temp);
    $umiDir->requireFolder($folder_temp);
    if($image = umiFile::upload('data', 'file-upload', $umiDir->getPath(), 'new')){
        $oMail->attachFile($image);
    }
    
    $regedit = regedit::getInstance();
    $admin_email = $regedit->getVal("//settings/admin_email");
    $arr_email = explode(",", $admin_email);
    foreach($arr_email as $val){
        $oMail->addRecipient($val);
    }
    
    
    $email_from = $regedit->getVal("//settings/email_from");
    $fio_from = $regedit->getVal("//settings/fio_from");
    
    
    $oMail->setFrom($email_from,$fio_from);
    $oMail->setSubject("Посетитель сайта $domain заполнил форму Обратный звонок");
    $oMail->setContent($message);
    $oMail->commit();
    $oMail->send(); // отправили письмо
    
    
    if($image) $image->delete(); // удаляем загруженную картинку с сервера
    
    return "<h3>Ваше письмо {$fio} успешно отправлено.</h3><p>Спасибо за обращение к нам, в ближайшее время Мы с Вами свяжемся!</p>";
}

Я убрал для удобства лишнее из HTML формы и оставил только 2 поля. Поле 'Загрузить файл' должно называться name='data[new][file-upload]' :

<form method="post" action="/content/send/" enctype="multipart/form-data">
Загрузить файл:<input  name="data[new][file-upload]" type="file" />
Комментарий:<textarea name="comments" cols="60" rows="4"></textarea>
<button class="button" type="submit">Отправить</button>
</form>

Если нужно сделать без использования класса umiMail, можно воспользоваться этим примером.

[ Saitadmin.ru || с 2006 по текущий год || Санкт-Петербург ]