Как отправить SMS в Java

Каковы возможные способы отправки и получения sms из Java-приложения?

Как?

(Отказ от ответственности: я работаю в компании Twilio).

Twilio предлагает Java SDK для отправки SMS через Twilio REST API.

Комментарии (3)

Если вам нужны только простые уведомления, многие операторы поддерживают передачу SMS по электронной почте; см. раздел SMS через электронную почту

Комментарии (0)

Существует API под названием SMSLib, он действительно замечательный. http://smslib.org/

EDIT:

Теперь у вас есть множество Saas-провайдеров, которые могут предоставить вам эту услугу, используя свои API.

Например: mailchimp, esendex, Twilio, ...

Комментарии (1)

Лучшие SMS API, я'вэ видел в Java JSMPP. Это мощный, легкий в использовании, и я использовал его сам для приложений на уровне предприятия (отправка за 20К SMS-сообщений ежедневно).

этот API создан для уменьшения детализации существующих протоколу SMPP API-интерфейс. Это's очень прост и удобен в использовании, потому что оно скрывает сложность низкий уровень протокола связи, такие как автоматически узнать запрос-ответ ссылку.

Я'пробовала некоторые другие API, таких как озэки, но большинство из них либо коммерческих или имеет ограничения в пропускной способности (я.E может'т отправить более 3 SMS-сообщений в секунду, например).

Комментарии (0)

Вы можете использовать Nexmo на Отправить SMS а также получать SMS](https://www.nexmo.com/blog/2017/05/31/receive-sms-messages-java-dr/).

Отправка SMS с Java-библиотека Nexmo достаточно проста. После создания новой учетной записи](https://dashboard.nexmo.com/sign-up), аренда виртуальный номер, и получаете ваш ключ &амп по API; секрет вы можете использовать библиотеку для отправки SMS вот так:

  public class SendSMS {

      public static void main(String[] args) throws Exception {
          AuthMethod auth = new TokenAuthMethod(API_KEY, API_SECRET);
          NexmoClient client = new NexmoClient(auth);

          TextMessage message = new TextMessage(FROM_NUMBER, TO_NUMBER, "Hello from Nexmo!");

          //There may be more than one response if the SMS sent is more than 160 characters.
          SmsSubmissionResult[] responses = client.getSmsClient().submitMessage(message);
            for (SmsSubmissionResult response : responses) {
            System.out.println(response);
          }
      }
  }

Для получения SMS вы'll необходимо, чтобы установить сервер, который использует веб-перехватчик. Что'ы довольно простой. Я рекомендую проверить наш учебник по получение SMS с Java.

Раскрытие: я работаю на Nexmo

Комментарии (0)

Вы можете сделать это с помощью GSM-модема и Java API связи [проверенные]

  1. Сначала нужно установить Java связи API В этой статье подробно описывается, как настроить API для сообщения
  2. Далее вам нужен GSM-модем (предпочтительно модуля SIM900 )
  3. В Java версии JDK последней версии предпочтительнее
  4. В руководстве Код # # # # пакет образцов;

импорт Java.Ио.; импорт Java.утиль.;

импорт гну.Ио.*;

импорт Java.Ио.*;

импорт орг."Апач".к log4j.бензопила.Главная;

импорт солнце.аудио.*;

публичных GSMConnect реализует SerialPortEventListener класс, CommPortOwnershipListener {

частная статическую строку Вести = "и СОМ6 и"; // Этот COM-порт нужно подключить с GSM-модемом или мобильным телефоном частная строку messageString = назальный;; частная CommPortIdentifier portid которого имеет значение = нуль; частная перечисления portList; частная клиента InputStream InputStream в = нуль; частная перенаправляет клиенту OutputStream = нуль; частная последовательный порт последовательный порт; Строки readBufferTrial = " по себе"; /* Создает новый экземпляр GSMConnect / общественные GSMConnect(строковое сообщение) {

это.вести = комми;

}

общественного логический метод init() { portList = CommPortIdentifier.getPortIdentifiers(); пока (portList.hasMoreElements()) { portid которого имеет значение = (CommPortIdentifier) portList.nextElement(); если (portid которого имеет значение.getPortType() == CommPortIdentifier.PORT_SERIAL) { если (portid которого имеет значение.метод getname().равна(согласуются)) { Системы.из.код println("и получил Имя_порта-то"); возвратите True; } } } возвращает false; }

общественного недействительными метода checkstatus() { отправить("и на+Крег?\я р\н&;); }

общественного недействительными отправить(строку и Cmd) { попробовать { клиенту OutputStream.писать(УМК.метод getbytes()); } поймать (исключение IOException е) { е.печатные(); } }

общественного недействительными метод SendMessage(строка, номер телефона, строку сообщения) { голец цитаты =' и"'; отправить (на"в+CMGS=на"+цитаты + номер телефона +цитаты+ " в\р\н" - а); попробовать { Нить.сон(2000); } поймать (выдачей InterruptedException е) { // Todo автоматически сгенерирован блок catch е.печатные(); } // отправить("и на quot CMGS+=\&; на"+ Номер телефона +" и\" в\р\н" - а); послать(сообщение + '\032'); Системы.из.код println (и"сообщение отправлено" - а); }

общественного недействительными зависания() { отправить (на"Ат\р\н" - а); }

общественного недействительными подключения() бросает исключение NullPointerException { если (portid которого имеет значение != значение null) { попробовать { portid которого имеет значение.addPortOwnershipListener(это);

последовательный порт = (последовательный порт) portid которого имеет значение.открыть (на"MobileGateWay и", 2000); serialPort.setSerialPortParams(115200,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE); } поймать (PortInUseException | UnsupportedCommOperationException е) { е.печатные(); }

попробовать { InputStream в = последовательный порт.getInputStream(); клиенту OutputStream = последовательный порт.getOutputStream();

} поймать (исключение IOException е) { е.печатные(); }

попробовать { /* Это события, мы хотим знать о/ последовательный порт.метод addEventListener(это); последовательный порт.notifyOnDataAvailable(истина); последовательный порт.notifyOnRingIndicator(истина); } поймать (TooManyListenersException е) { е.печатные(); }

//Зарегистрировать в домашней сети SIM-карты

отправить (на"АТЗ\р\н" - а);

} еще { бросить новое исключение NullPointerException("и COM-порт не найден!!&и"); } }

общественного недействительными serialEvent(serialPortEvent SerialPortEvent) { переключатель (serialPortEvent.метод geteventtype()) { дело SerialPortEvent.Би: дело SerialPortEvent.ОЭ: дело SerialPortEvent.Фе: дело SerialPortEvent.ЧП: дело SerialPortEvent.Компакт-диск: дело SerialPortEvent.ТТ: дело SerialPortEvent.ДСР: дело SerialPortEvent.РИ: дело SerialPortEvent.OUTPUT_BUFFER_EMPTY: дело SerialPortEvent.DATA_AVAILABLE:

байт[] readBuffer = новый байт[2048]; попробовать { пока (класса InputStream.в наличии () и gt; 0) { тип int numBytes = ридера.читать(readBuffer);

Системы.из.печати(numBytes); если((readBuffer.метод toString()).содержит (на"Кольцо", у)){ Системы.из.код println("и введите внутрь, если кольцо, петлю" - а);

} }

Системы.из.печать(новую строку(readBuffer)); } поймать (исключение IOException е) { } перерыв; } } outCommand общественного недействительными(){ Системы.из.печати(readBufferTrial); } общественного недействительными ownershipChange(тип int) { выключатель (тип) { дело CommPortOwnershipListener.PORT_UNOWNED: Системы.из.метод println(portid которого имеет значение.метод getname() + " и: PORT_UNOWNED" - а); перерыв; дело CommPortOwnershipListener.PORT_OWNED: Системы.из.метод println(portid которого имеет значение.метод getname() + " и: PORT_OWNED" - а); перерыв; дело CommPortOwnershipListener.PORT_OWNERSHIP_REQUESTED: Системы.из.метод println(portid которого имеет значение.метод getname() + " и: PORT_INUSED" - а); перерыв; }

} общественного недействительными closePort(){

последовательный порт.закрыть(); }

общественная статический недействительным основные(string аргументы[]) { GSMConnect ПГС = новый GSMConnect(вести); если (стандарта GSM.метод init()) { попробовать { Системы.из.метод println (на"Успех инициализации и"); стандарта GSM.подключиться(); Нить.сон(5000); стандарта GSM.метода checkstatus(); Нить.сон(5000);

стандарта GSM.метод SendMessage(" в+91XXXXXXXX и", "в суде успеха");

Нить.спать(1000);

стандарта GSM.отбой(); Нить.спать(1000); стандарта GSM.closePort(); стандарта GSM.outCommand(); Системы.выход(1);

} поймать (исключение e) { е.печатные(); } } еще { Системы.из.метод println("могут'т инициализации это карты и"); } }

}

Комментарии (0)

Вы можете ЛОГИЧА ПМПП Ява API для отправки и получения SMS в Java-приложения. ЛОГИЧА ПМПП хорошо зарекомендовала себя API в приложение телеком. Логическая API также предоставить вам с сигнализации штарки capicity на TCP/IP соединение.

Вы сможете напрямую интегрировать с различными оператора связи accross мира.

Комментарии (0)

Есть два способа : Первый : использовать SMS шлюз API, который вы должны заплатить за это , может быть, вы найдете некоторые суда даже бесплатные, но это's не хватает . Второй : использовать в команде с GSM модем, подключенный к ноутбуку . что's все

Комментарии (0)

Это зависит от того, как вы'вновь ходить на работу и кто ваш провайдер.

Если вы работаете с SMS-шлюз компании вы'будете, вероятно, работать через протокол SMPP (3.4-прежнему является наиболее распространенным), то обратите внимание на OpenSMPP и jSMPP. Эти мощные библиотеки для работы с ПМПП.

Если вы'ре собирается работать на вашем оборудовании (Ф.е. GSM-модема) самый простой способ для отправки сообщений посредством AT-команд, они отличаются в зависимости от модели, так, вы должны выяснить, что за команды поддерживается вашим модемом. Далее, Если ваш модем имеет IP и открыты для связи, вы можете посылать команды через Java сокет

Socket smppSocket = new Socket("YOUR_MODEM_IP", YOUR_MODEM_PORT);
DataOutputStream os = new DataOutputStream(smppSocket.getOutputStream());
DataInputStream is = new DataInputStream(smppSocket.getInputStream());

os.write(some_byte_array[]);
is.readLine();

В противном случае вы'будете работать через COM-порт, но метод тот же (отправка AT-команд), вы можете найти более подробную информацию как работать с последовательными портами здесь.

Комментарии (0)

Я предлагаю облачное решение, как в Twilio. Решения на основе облачных вычислений являются экономически эффективным, чем решение, так как нет постоянного технического обслуживания, необходимые. SMS через электронную почту-это не элегантное решение, как вы должны получить носитель информации от пользователя, и вы никогда не можете быть уверены, что вы можете все мобильные номера. Я с использованием Twilio API-интерфейса Java в моем веб-приложение, чтобы отправить SMS с серверной стороны. в течение нескольких минут, вы можете интегрировать с вашим приложением.

https://www.twilio.com/docs/java/install

Здесь'ы пример отправки SMS сообщения из документов:

import com.twilio.sdk.TwilioRestClient;
import com.twilio.sdk.TwilioRestException;
import com.twilio.sdk.resource.factory.MessageFactory;
import com.twilio.sdk.resource.instance.Message;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import java.util.ArrayList;
import java.util.List;

public class Example {

  // Find your Account Sid and Token at twilio.com/user/account
  public static final String ACCOUNT_SID = "{{ account_sid }}";
  public static final String AUTH_TOKEN = "{{ auth_token }}";

  public static void main(String[] args) throws TwilioRestException {
    TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);

    // Build a filter for the MessageList
    List params = new ArrayList();
    params.add(new BasicNameValuePair("Body", "Test Twilio message"));
    params.add(new BasicNameValuePair("To", "+14159352345"));
    params.add(new BasicNameValuePair("From", "+14158141829"));

    MessageFactory messageFactory = client.getAccount().getMessageFactory();
    Message message = messageFactory.create(params);
    System.out.println(message.getSid());
  }
}
Комментарии (2)

ОМК.пмпп. API-интерфейс. это'с базы на СМПП и симулятор тоже можно бесплатно

ЛОГИЧЕСКАЯ ПРОТОКОЛУ SMPP API-ИНТЕРФЕЙС.

И другой вариант Зап бесплатный WAP и SMS шлюз.

Комментарии (1)

TextMarks дает вам доступ к его общий короткий номер, чтобы отправлять и получать текстовые сообщения с вашего приложения через их API. Сообщения поступают от/до 41411 (вместо, например, случайный телефона# и в отличие от e-mail шлюзы, вы имеете полное 160 символов для работы с).

Вы также можете сказать людям, чтобы текст вашего сайта(ов) 41411 для вызова различных функций в вашем приложении. Есть клиент на Java API вместе с несколькими другими популярными языками и очень подробную документацию и техническую поддержку.

14 дневную бесплатную пробную версию может быть легко расширена для разработчиков, которые до сих пор тестирования, и строить свои приложения.

Посмотрите здесь: TextMarks по API информация

Комментарии (0)

smslib является очень полезным для этой цели можно подключить модем к вашему ПК и использовать этот Либ для отправки SMS . Это работает, я использовал его

Комментарии (0)

Мы тоже любим Java в Wavecell, но на этот вопрос можно ответить без языка-конкретные детали, поскольку у нас API-интерфейс REST, который будет охватывать большинство ваших потребностей:

curl -X "POST" https://api.wavecell.com/sms/v1/amazing_hq/single \
    -u amazing:1234512345 \
    -H "Content-Type: application/json" \
    -d $'{ "source": "AmazingDev", "destination": "+6512345678", "text": "Hello, World!" }'

Посмотрите на эти вопросы, если у вас есть проблемы с отправкой HTTP-запросов в Java:

Для особых случаев вы можете также рассмотреть возможность использования ПМПП АПИ и уже упомянутые [JSMPP] библиотека4 поможет с этим.

Комментарии (0)

Вы можете использовать at & команды для отправки SMS через GSM-модем.

Комментарии (0)