Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Вниз

Отправка смс (МегаСлон, МТС, БиЛайн из программы Делфи   Найти похожие ветки 

 
_intruder   (2004-11-05 09:27) [0]

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


 
Delphin ©   (2004-11-05 18:15) [1]

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


 
S@shka ©   (2004-11-05 18:17) [2]

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


 
Delphin ©   (2004-11-05 18:23) [3]

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

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;



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


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

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


 
Piter ©   (2004-11-05 21:13) [5]

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


 
intruder ©   (2004-11-10 12:53) [6]

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


 
Knight ©   (2004-11-10 19:31) [7]

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


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

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

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



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
6-1099904771
alexb_1
2004-11-08 12:06
2005.01.30
Исходник download-менеджера


3-1103973504
Step[B.M.]
2004-12-25 14:18
2005.01.30
Как с помощью SQL вывести 1 первый символ cтроки? испол. FireBird


3-1103794984
YuRock
2004-12-23 12:43
2005.01.30
Странная работа функций в Oracle


9-1098072598
Trimp
2004-10-18 08:09
2005.01.30
Выбор компонента


6-1099745884
Argentum
2004-11-06 15:58
2005.01.30
Обработка ошибок (TClientSocket)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский