•  

ГлавнаяIndyЧастые вопросы по Indy → Как отправить SMS?

Создано: 17.05.2014 1:09:46 · Исправлено: 17.05.2014 1:09:46 · Прочтений: 2668

Задумал я тут прогрмакунаписать. Неполучаеться у меня отправка СМСок. Причём нашёл код и разобрался с отправкой для Билайна. А вот МТС и МЕГАФОН так и не смог нечего для того кода подобрать и разобраться (мой основной интерес заключается в програмировании баз жаннх и виндовских приложений), и всвязи с малым знаний и передачи данных и всё такое. Прошу что нибудь предложить если есть. Код который РАБОЧИЙ, желательно на прямую, но можно через сторонии программы (Маил агента) отправляет смс к примеру на МТС
Писал такую программу. Тут делается все как почтовый клиент. Просто посылаешь письмо на домен оператора в номерноцй ящик. Но есть два но c которым столкнещься. 1. У каждого регионального или федерального оператора свой домен. 2. У некоторых операторов услугу доставки СМС через почту надо активировать( у megafon точно надо ).
Не сочтите совсем ламером... хотя в этом вопорсе так и есть. У меня это и проблема я под дня щас посидел... кусками набарл инфы. Но пока не догнал до Просто посылаешь письмо на домен оператора в номерноцй ящик. вот тут начинаеться проблемы :(
Когда вормируещь сообшение, необходимо в соответствии со спецификацией заполнить поля. От кого: Тут желательно указать существующий почтовый ящик отправлителя. (некоторые сервера игнорируют несуществующие). Кому: Ту должно быть чтото на подобие [email protected] Кде 79128645455 - сот телефон. BeeLine.Ru - домен. Вот с полем Кому и надо разбираться. Для мегафон - ural.megafon.ru moskva.megafon.ru. Вобщем для каждого региона свой. Надо узнавать. Какой у тебя регион и какой домен его обслуживает.
Так вот это даёт мне уже оптимизма :) У меня 7 Делфа. Какие компоненты посоветуете мне использовать (Повтарюсь - передача даных такого рода для меня впревой)
тогда Indy, В дериктории делфей есть папка demo там есть пример как отправлять почту.
Вообщем разобрался с отправкой почты с помощью компонентов indy. Нормально всё работает.. с почтовиком. Но стал пробывать отправилять на адреса [email protected] такого формата. Пишет мне что соедение с сервором удачное и всё. Типа письмо отправило. Но СМСка не приходит. ПРобывал и на мтс, заместо Билайна писал всякое по мтс, что могло бы подойти. нет смс. Ниде показываю код ... там один из мтс вариантов. Нечего я тут не напутал.
  SMTP.Host:=smtp.inbox.ru;  
  SMTP.Port:=25;  
  SMTP.Username:=Lexx_k27;  
  SMTP.Password:=celeron;  
  SMTP.AuthenticationType:=atLogin;  
  with IdMessage do
      begin
        Body.Assign(Memo1.Lines);  
        From.Text := [email protected];        Recipients.EMailAddresses := 7[email protected]; 
        Subject := Programmersclub.ru; 

        end;

      SMTP.Connect; 
        try
      showmessage(Соеденение удалось);
      SMTP.Send(IdMessage);  
        finally
          SMTP.Disconnect;  
        end; end;
PS ещё прочёл что надо указать типа что это просто текст. Это надо делать?? Если надло как не знаете??
Отвечаю практическим работающим примером (сам подключал программно - работает) Так как у Билайн производится защита по картинке, то будем отсылать через почтовый ящик!!! 1. Во-первых, сначала вам надо подключить услугу SMS на телефон - ДА на самом сайте Билайн, ссылка отсюда: http://www.beonline.ru/portal/comm/send_sms/simple_send_sms.sms/ 2. Далее в программе пишем следующий код (например по щелчок по кнопке) Используем компонент IdSMTP (страница Indy). За пример используем mail.ru В начале описываем константы функции (их здесь не привожу, её несложно найти в интернете)
function Win_KoiConvert(const St: string): string;
var
  i: integer;
begin
  Result:=St;
  for i := 1 to Length(St) do
    if St[i] > #127 then
      Result[i] := Win_KoiChars[St[i]];
end;
НАШЕ ДЕЙСТВИЕ:
var
  Messages: string;
begin
    Messages := Тест передачи сообщений через оператора Билайн;
    Form1.Label1.Caption := Messages;
    Form1.IdSMTP1.AuthenticationType := atLogin;
    Form1.IdSMTP1.Host := smtp.mail.ru;
    Form1.IdSMTP1.Username := вашпочта;//имя от ящика вашапочта@mail.ru
    Form1.IdSMTP1.Password := вашпароль;//пароль на ящик вашапочта@mail.ru
    Form1.IdSMTP1.AuthenticationType:= atLogin;
    try
      Form1.IdSMTP1.Connect(5000);
      Form1.IdSMTP1.Authenticate;
      Msg := TIdMessage.Create(Form1.IdSMTP1);
      Msg.Subject := BeeMail-SMS; //текст темы сообщения
      Msg.Recipients.EMailAddresses := 7[email protected]; //указываем свой адрес, где первая часть - номер вашего сотового телефона
      Msg.From.Address := Form1.IdSMTP1.Username + @mail.ru; //указываем автора письма
      Msg.From.Name := Test;
      Msg.Body.Text := Win_KoiConvert(Messages);//размещаем текст сообщения, перекодировав его Win => KOI8
      Msg.Date := Now; //дата отправки письма может быть любой
      If Form1.IdSMTP1.Connected = True then
      begin
        Form1.IdSMTP1.Send(Msg);
        Form1.StatusBar1.Panels[1].Text := Сообщение отправлено;
        Msg.Free;
      end else Form1.StatusBar1.Panels[1].Text := Невозможно отправить сообщение (отключите антивирус);
    finally
      Form1.IdSMTP1.Disconnect;
    end;
    Sleep(1000);
    Result := True;
end;
3. Вы получаете сначала копию SMS (письмо) на Mail (нужен свой официальный ящик), а потом приходит SMS на телефон! Я этим гарантировано пользовался в мае 2008 года!
Добрый день у меня в этом коде не работает Form1.IdSMTP1.Connect(5000) с ошибкой [Pascal Error] example1.pas(81): E2250 There is no overloaded version of Connect that can be called with these arguments. Буду благодарен если поможете разобраться.