@Override
    public boolean send(final String from, final String to, final String message) {
        try {
            val headers = new LinkedMultiValueMap<String, String>();
            headers.add(HttpHeaders.AUTHORIZATION, this.token);
            headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
            headers.add(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);

            val map = new HashMap<String, Object>();
            map.put("content", message);
            map.put("to", CollectionUtils.wrap(to));
            map.put("from", from);

            val stringify = new StringWriter();
            MAPPER.writeValue(stringify, map);

            val request = new HttpEntity<>(stringify.toString(), headers);
            val response = restTemplate.postForEntity(new URI(this.serverUrl), request, Map.class);
            if (response.hasBody()) {
                val body = response.getBody();
                LOGGER.debug("Received response [{}]", body);

                if (body == null || !body.containsKey("messages")) {
                    LOGGER.error("Response body does not contain any messages");
                    return false;
                }

                val error = (String) body.get("error");
                if (StringUtils.isNotBlank(error)) {
                    LOGGER.error(error);
                    return false;
                }

                val messages = (List<Map>) body.get("messages");
                val errors = messages.stream()
                    .filter(m -> m.containsKey("accepted") && !Boolean.parseBoolean(m.get("accepted").toString()) && m.containsKey("error"))
                    .map(m -> (String) m.get("error")).toList();
                if (errors.isEmpty()) {
                    return true;
                }
                errors.forEach(LOGGER::error);
            }
        } catch (final Exception e) {
            LoggingUtils.error(LOGGER, e);
        }
        return false;
    }
This is {@link ClickatellSmsSender}.

@author Misagh Moayyed
@since 5.1.0
support/cas-server-support-sms-clickatell/src/main/java/org/apereo/cas/support/sms/ClickatellSmsSender.java