Отправка SMS (Delphi)

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Отправка SMS (Delphi)

Сообщение Maximus » 12 авг 2011, 12:59

Есть ли возможность отправить смс прямо из программы?

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Andrey » 12 авг 2011, 13:20

Можно, но при условии что программа работает с подключенным к компьютером телефоном или использует онлайн-сервис отправки sms. То есть без использования сторонних сервисов не обойтись.

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Maximus » 12 авг 2011, 13:23

Телефон - не вариант. А вот насчёт сервисов слышал, что можно как-то через электронную почту отправить или есть ещё способы?

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Andrey » 12 авг 2011, 13:35

Через почту не у всех операторов. Есть другие способы: использовать веб-компоненты современных версий delphi и связываться с сервисами отправки sms, подделывать заголовки ответа сервера и просто отправлять через программу (не рекомендуется, заголовки могут измениться в любое время), использовать iframe для отображения в программе страницы отправки sms с сайта сервиса.

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Maximus » 12 авг 2011, 13:43

Только вот на всех сайтах нужно вводить капчу, а мне нужно чтобы в программе вводился только номер телефона и текст.

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Andrey » 12 авг 2011, 13:58

Тогда остаются только sms-шлюзы (то что через email). Но такая услуга может быть не у всех операторов, может быть платной, может быть отключена у абонентов оператора

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Maximus » 12 авг 2011, 14:48

Ну а как это сделать, что за шлюзы нужно использовать?

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Andrey » 12 авг 2011, 14:59

Я их адреса так и не нашёл. Делается это путём отправки email (например 9190000000@mts.ru) из Delphi.

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Maximus » 12 авг 2011, 15:34

А как отправить и зачем тогда шлюзы если можно так (например 9190000000@mts.ru) отправить?

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Andrey » 12 авг 2011, 15:42

Отправленное таким образом письмо поступает на шлюз оператора. Если эта услуга не подключена абонентом то просто вернётся сообщение о неправильном адресе. Если услуга включена, то абонент получит сообщением с предупреждением что сообщение отправлено с компьютера и может быть спамом.
Если код отправки нужен выложу.

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Maximus » 12 авг 2011, 15:45

Выложи пожалуйста. А вот интересно каким образом работают сайты на которых можно вписать номер отправителя?

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Andrey » 12 авг 2011, 16:01

Maximus писал(а):А вот интересно каким образом работают сайты на которых можно вписать номер отправителя?
Посмотрел один такой. Просто подгрузка информации, в том числе и капчи с сайта оператора, в зависимости от введённого номера.

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Maximus » 12 авг 2011, 16:08

Подгрузка какой информации? Ведь на сайтах операторов нет такой опции "замена номера отправителя".

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Andrey » 12 авг 2011, 16:48

Сейчас я код перепроверю, а то интернет не вовремя отключился.

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Andrey » 12 авг 2011, 16:55

Проверил код, email-сообщения отправляются нормально, но вот к примеру через шлюз mts ничего не проходит, адреса других не нашёл. Выкладывать этот код или не нужен?

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Maximus » 12 авг 2011, 17:16

Давай, посмотрю.

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Andrey » 12 авг 2011, 17:22

1. Добавить на форму компоненты TidSMTP и TidMessage из группы Indy.
2. Код инициализации подключения к SMTP-серверу

Код: Выделить всё

try
    IdSMTP1.AuthType:=satDefault;
    IdSMTP1.Host:='box.vrn.ru'; //любой SMTP
    IdSMTP1.Port:=25;
    IdSMTP1.Username:=''; //логин
    IdSMTP1.Password:='';  //пароль
    IdSMTP1.Connect;
  except
    on e:Exception do
  end;
3. Код отправки

Код: Выделить всё

var
  msg:TIdMessage;
.......
try
    msg:=TIdMessage.Create(nil);
    msg.Body.Add('test mail'); //text
    msg.Subject:='header message'; //заголовок
    msg.From.Address:=sender_mail@mail.ru'; //адрес отправителя
    msg.From.Name:='name'; //имя отправителя
    msg.Recipients.EMailAddresses:='9190000000@sms.mts.ru';
    msg.IsEncoded:=True;
    IdSMTP1.Send(msg);
    msg.Free;
    IdSMTP1.Disconnect;
  except
    on e:Exception do
    begin
      msg.Free;
      IdSMTP1.Disconnect;
    end;
  end;

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Maximus » 12 авг 2011, 17:29

А вот здесь, логин и пароль от чего? И что такое SMTP?

Код: Выделить всё

IdSMTP1.Host:='box.vrn.ru'; //любой SMTP
    IdSMTP1.Port:=25;
    IdSMTP1.Username:=''; //логин
    IdSMTP1.Password:='';  //пароль

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Andrey » 12 авг 2011, 17:36

SMTP - протокол исходящей почты. SMTP-сервер - сервер, который отправляет почту.
Логин и пароль соответственно от учётной записи SMTP-сервера. Из сети freedom можно использовать адрес box.vrn.ru без авторизации (с внешки не работает). Можно использовать smtp.mail.ru, smtp.gmail.com, smtp.rambler.ru и другие (нужно иметь почтовые аккаунты на этих серверах).

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: Отправка SMS (Delphi)

Сообщение Maximus » 12 авг 2011, 17:49

А из какой именно группы Indy? У меня там сервер, клиент, intercepts, I/O Handlers, Misk.

Ответить