Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отправка смс (МегаСлон, МТС, БиЛайн из программы Делфи [D6, D7, Win95/98, NT4, Win2k, WinXP]


_intruder ©   (2004-11-05 09:27:00) 

Собственно сабж, самое смешное, что ранее я это делал для Делфи 6, но сырцы потерял, а теперь поставили задачу, и что - то запамятовал как мне сделать это...
-------------------------------------
Программисты не умирают, они теряют память...


Сергей Г   (2004-11-12 08:59:00) [1]

>intruder ©   (10.11.04 12:53) [6]
>вопрос Сергею, как я понял смс отправляются на почтовый шлюз, >его как получить для моего региона (Архангельская область)

 Все очень просто. Все зависит от оператора сотовой связи:
Нужно связаться со справочной службой Вашего сотового оператора и выяснить как он предоставляет доступ к почтовому ящику.
Для примера:
Мегафон Повольжье - включает его сразу при подключении
Би Лайн - делается дополнительный запрос
Про остальные сказать трудно


Knight   (2004-11-10 19:31:00) [2]

У нас на Северозападном Мегафоне, говорят, такой возмоности нет... сам сколько сайтов перерыл.


intruder   (2004-11-10 12:53:00) [3]

вопрос Сергею, как я понял смс отправляются на почтовый шлюз, его как получить для моего региона (Архангельская область)


Piter   (2004-11-05 21:13:00) [4]

Этот вопрос надо определенно в FAQ включить...


Сергей Г   (2004-11-05 18:47:00) [5]

см: http://sergygoodkov.narod.ruтам есть и исходники под Delphi 6


Delphin   (2004-11-05 18:23:00) [6]

Вот код для отправки сообщений через шлюзы:
(он разбивает весь текст введённый в мемо на куски и отправляет:)

procedure TForm1.spSkinButton2Click(Sender: TObject);
Var
I,A,Z:Integer;
So:String;
begin
IF (Form6.spSkinCheckRadioBox11.Checked)AND(Form4.spSkinListBox1.Items.Count>0)
Then MS:=True;
IF MS=True Then Edit3.Text:='MultiSend';

A:=0;
B:=0;
Checker.Execute;
I:=Memo1.GetTextLen;
While I>=130 Do Begin
I:=I-130;
Memo1.SelStart:=A;
Memo1.SelLength:=130;

IF Form6.spSkinCheckRadioBox5.Checked
Then  Begin
Inc(MsgNum);
IdMessage1.Body.Add(Memo1.SelText+' Msg '+IntToStr(MsgNum)+' of '+IntToStr(X));
IF MsgNum=X Then MsgNum:=0;
End
Else
IdMessage1.Body.Add(Memo1.SelText);  
IF (Form6.spSkinCheckRadioBox6.Checked)AND(Form6.spSkinCheckRadioBox8.Checked)
Then IdMessage1.Body.Add(Form6.spSkinEdit1.Text);

Z:=0;
IF MS=TRue Then Begin
For Z:=0 To Form4.spSkinListBox1.Items.Count-1 Do Begin
Form4.spSkinListBox1.ItemIndex:=z;
NTS:=Form4.spSkinListBox1.Items[Form4.spSkinListBox1.ItemIndex];
Send.Execute;
End;
ClearH.Execute;
End
Else  Begin
Send.Execute;
ClearH.Execute;
end;
End;

Inc(B);
A:=A+130;

IF I>0 Then Begin
Memo1.SelStart:=A;
Memo1.SelLength:=I;
IF Memo1.GetTextLen<=130 Then Begin
Memo1.SelStart:=0;
Memo1.SelLength:=130;
End;

IF Form6.spSkinCheckRadioBox5.Checked
Then  Begin
Inc(MsgNum);
IdMessage1.Body.Add(Memo1.SelText+' Msg '+IntToStr(MsgNum)+' of '+IntToStr(X));
IF MsgNum=X Then MsgNum:=0;
End
Else
IdMessage1.Body.Add(Memo1.SelText);

IF (Form6.spSkinCheckRadioBox6.Checked)AND(Form6.spSkinCheckRadioBox8.Checked)
Then IdMessage1.Body.Add(Form6.spSkinEdit1.Text);

Z:=0;
IF MS=TRue Then Begin
For Z:=0 To Form4.spSkinListBox1.Items.Count-1 Do Begin
Form4.spSkinListBox1.ItemIndex:=z;
NTS:=Form4.spSkinListBox1.Items[Form4.spSkinListBox1.ItemIndex];
Send.Execute;
End;
ClearH.Execute;
End
Else
Send.Execute;
ClearH.Execute;
IdMessage1.Clear;
IF X>0 Then X:=1;
End;

end;

procedure TForm1.SendExecute(Sender: TObject);
Var
S:String;
begin
Try
Connection.Execute;
IF Not IdSmtp1.Connected
Then
Connection.Execute;

IF (B=X-1)And(Form6.spSkinCheckRadioBox6.Checked)And(Form6.spSkinCheckRadioBox7.Checked)
And(Not Form6.spSkinCheckRadioBox8.Checked)
Then
IdMessage1.Body.Add(Form6.spSkinEdit1.Text);
IdMessage1.From.Name:=SEdit1.Text;
IdMessage1.From.Address:=Edit2.Text;
IF Ms<>True Then Begin
S:=Copy(Edit3.Text,1,2);
Case StrToInt(S) of 95,96,97,98,67,68,60,59,99,82:
IdMessage1.Recipients.EMailAddresses:='+371'+Edit3.Text+'@sms.tele2.lv';
Else
IdMessage1.Recipients.EMailAddresses:='+371'+Edit3.Text+'@smsmail.lmt.lv';
End;
End
Else
Begin
S:=Copy(NTS,1,2);
Case StrToInt(S) of 95,96,97,98,67,68,60,59,99,82:
IdMessage1.Recipients.EMailAddresses:='+371'+Edit3.Text+'@sms.tele2.lv';
Else
IdMessage1.Recipients.EMailAddresses:='+371'+Edit3.Text+'@smsmail.lmt.lv';
End;
End;
IdMessage1.Subject:=EDit4.Text;
IdSmtp1.Send(IdMessage1);
Finally
IdSmtp1.Disconnect;
end;
end;

procedure TForm1.ConnectionExecute(Sender: TObject);
begin
Try
IF Form5.SpSkinCheckRadioBox1.Checked Then Begin
IdSmtp1.AuthenticationType:=AtNone;
IdSmtp1.Username:=Form5.spSkinEdit2.Text;
IdSmtp1.Host:=Form5.spSkinEdit1.Text;
IdSmtp1.Connect();
Form5.spSkinStdLabel5.Caption:='Connected';
End;
Except
MessageDlg('Not Connected',mtError,[mbok],0);
Form5.spSkinStdLabel5.Caption:='Error, Not connected';
ConnectError.Execute;
End;
Try
IF Form5.SpSkinCheckRadioBox2.Checked Then Begin
IdSmtp1.AuthenticationType:=AtLogin;
IdSmtp1.Username:=Form5.spSkinEdit2.Text;
IdSmtp1.Host:=Form5.spSkinEdit1.Text;
IdSmtp1.Connect();
Form5.spSkinStdLabel5.Caption:='Connected';
End;
Except
MessageDlg('Not Connected',mtError,[mbok],0);
Form5.spSkinStdLabel5.Caption:='Error, Not connected';
ConnectError.Execute;
End;
end;

procedure TForm1.CheckerExecute(Sender: TObject);
Var
I:Integer;
begin
I:=Memo1.GetTextLen;
IF I<=130 Then
X:=1;
While I>=130 Do Begin
I:=I-130;
Inc(X);
IF I<130 Then
Inc(X);
End;

end;



Писал давно и код корявый, но работоспособный :)


S@shka   (2004-11-05 18:17:00) [7]

:))))))
без комментариев


Delphin   (2004-11-05 18:15:00) [8]

Есть два варианта:
1) Отправлять через смс шлюзы (<Код><Номер><Шлюз>)
2) Отправлять через сайт Опсос'a


Наверх

Титульная страница Поиск, карта сайта Написать письмо