' . nl2br(get_settings('mail_signature'));
				}
				else
				{
					$signature = "\r\n\r\n" . get_settings('mail_signature');
				}
			}
			else $signature = '';
			// Составляем тело письма
			$body = stripslashes($body) . $signature;
			if ($type == 'text/html')
			{
				$body = str_replace(array("\t","\r","\n"),'',$body);
				$body = str_replace(array('  ','> <'),array(' ','><'),$body);
			}
			// Формируем письмо
			$message = Swift_Message::newInstance($subject)
				-> setFrom(array($from_email => $from_name))
				-> setTo($to)
				-> setContentType($type)
				-> setBody($body)
				-> setMaxLineLength((int)get_settings('mail_word_wrap'));
			// Прикрепляем вложения
			if ($attach)
			{
				foreach ($attach as $attach_file)
				{
					$message -> attach(Swift_Attachment::fromPath(trim($attach_file)));
				}
			}
			// Выбираем метод отправки и формируем транспорт
			switch (get_settings('mail_type'))
			{
				default:
				case 'mail':
					$transport = Swift_MailTransport::newInstance();
					break;
				case 'smtp':
					$transport = Swift_SmtpTransport::newInstance(stripslashes(get_settings('mail_host')), (int)get_settings('mail_port'));
					// Добавляем шифрование
					$smtp_encrypt = get_settings('mail_smtp_encrypt');
					if($smtp_encrypt)
						$transport
							->setEncryption(strtolower(stripslashes($smtp_encrypt)));
					// Имя пользователя/пароль
					$smtp_user = get_settings('mail_smtp_login');
					$smtp_pass = get_settings('mail_smtp_pass');
					if($smtp_user)
						$transport
							->setUsername(stripslashes($smtp_user))
							->setPassword(stripslashes($smtp_pass));
					break;
				case 'sendmail':
					$transport = Swift_SendmailTransport::newInstance(get_settings('mail_sendmail_path'));
					break;
			}
			// Сохраняем вложения в ATTACH_DIR, если просили
			if ($attach && $saveattach)
			{
				$attach_dir = BASE_DIR . '/tmp/' . ATTACH_DIR . '/';
				foreach ($attach as $file_path)
				{
					if ($file_path && file_exists($file_path))
					{
						$file_name = basename($file_path);
						$file_name = str_replace(' ','',mb_strtolower(trim($file_name)));
						if (file_exists($attach_dir . $file_name))
						{
							$file_name = rand(1000, 9999) . '_' . $file_name;
						}
						$file_path_new = $attach_dir . $file_name;
						if (!@move_uploaded_file($file_path,$file_path_new))
						{
							copy($file_path,$file_path_new);
						}
					}
				}
			}
			// Отправляем письмо
			/** @var $transport TYPE_NAME */
			$mailer = Swift_Mailer::newInstance($transport);
			if (!@$mailer -> send($message, $failures))
			{
				reportLog('Не удалось отправить письма следующим адресатам: ' . implode(',',$failures));
				return $failures;
			}
		}
	}
	if ( ! function_exists('safe_mailto'))
	{
		function safe_mailto($email, $title = '', $attributes = '')
		{
			$title = (string) $title;
			if ($title == "")
			{
				$title = $email;
			}
			for ($i = 0; $i < 16; $i++)
			{
				$x[] = substr(' $val)
					{
						$x[] =  ' '.$key.'="';
						for ($i = 0; $i < strlen($val); $i++)
						{
							$x[] = "|".ord(substr($val, $i, 1));
						}
						$x[] = '"';
					}
				}
				else
				{
					for ($i = 0; $i < strlen($attributes); $i++)
					{
						$x[] = substr($attributes, $i, 1);
					}
				}
			}
			$x[] = '>';
			$temp = array();
			for ($i = 0; $i < strlen($title); $i++)
			{
				$ordinal = ord($title[$i]);
				if ($ordinal < 128)
				{
					$x[] = "|".$ordinal;
				}
				else
				{
					if (count($temp) == 0)
					{
						$count = ($ordinal < 224) ? 2 : 3;
					}
					$temp[] = $ordinal;
					if (count($temp) == $count)
					{
						$number = ($count == 3) ? (($temp['0'] % 16) * 4096) + (($temp['1'] % 64) * 64) + ($temp['2'] % 64) : (($temp['0'] % 32) * 64) + ($temp['1'] % 64);
						$x[] = "|".$number;
						$count = 1;
						$temp = array();
					}
				}
			}
			$x[] = '<'; $x[] = '/'; $x[] = 'a'; $x[] = '>';
			$x = array_reverse($x);
			ob_start();
		?>