3G Modemler ve Toplu SMS gönderme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

3G Modemler ve Toplu SMS gönderme

Mesaj gönderen White Rose »

s.a.
Arkadaşlar programlarımızdan toplu sms göndermek için iyi bir çözüm olmasını düşündüğüm
turkcell winn, avea jet ve vodafon vodem kullanan arkadaşlar var mıdır acaba.
Ben Turkcell winn'i win7 64 bitte bir türlü modem olarak tanıtamadım,
Turkcell sitesinden yeni sürümü indirdim, kendi yazılımını kullandım, huawei i kurdum fakat bir türlü olmadı,
XP de denedim yine cihazı bir türlü modem olarak tanıtamadım, böyle olunca sms gönderme işi de olmuyor tabii.
Çözüm önerilerinizi bekliyorum. Teşekkür ederim.
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen erdogan_ozkaya »

amacın toplu SMS göndermek ise wın ve Turkcell siteden gönderdiğin hepsi ücretli oluyor.
delphide toplu sms göndermek istiyorsan kod örnek verebilirim
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen White Rose »

Erdoğan bey cevap için teşekkür ederim
Genelde toplu sms için servislerine üye olacaksınız, sms alacaksınız, xml kodları farklı farklı ve internet gerekli
+ son kullanıcı için bu pratik değil, fakat bir 3G modem+bir de sim kart(Turkcell, Avea, Vodafon farketmez) alsanız
istediğiniz kadar lira yükleyin üstelik artık bu tür sms ler ucuz ve internete gerek yok.
Programcılar için ise diğerinden (internet üzerinden toplu sms ) daha pratik çözüm diye düşünüyorum.
O bakımdan 3G modemi tercih ettim. Örnek kodunuzu da görmek isterim.
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen erdogan_ozkaya »

UMARIM İŞİNE YARAR :)

Kod: Tümünü seç

unit Unit82;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, IdHTTP, Mask, RzEdit, RzBtnEdt, DB, ADODB,
  Grids, DBGrids, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdSMTP, IdBaseComponent, IdMessage, RzTabs, ComCtrls;

type
  TSMS_TOPLU_GONDER = class(TForm)
    Kapat_btn: TSpeedButton;
    CARI_KART_DB: TADOQuery;
    CARI_KART_DBCari_ID: TAutoIncField;
    CARI_KART_DBGenel_Cari_Kodu: TStringField;
    CARI_KART_DBGenel_Cari_Unvan: TStringField;
    CARI_KART_DBGenel_Aciklama: TStringField;
    CARI_KART_DBGenel_Adres: TStringField;
    CARI_KART_DBGenel_Telefon_1: TStringField;
    CARI_KART_DBGenel_Sehir: TStringField;
    CARI_KART_DBGenel_Ilce: TStringField;
    CARI_KART_DBGenel_Telefon_2: TStringField;
    CARI_KART_DBGenel_Vergi_Dairesi: TStringField;
    CARI_KART_DBGenel_Vergi_No: TStringField;
    CARI_KART_DBGenel_Kredi_Limiti: TFloatField;
    CARI_KART_DBGenel_Risk_Limiti: TFloatField;
    CARI_KART_DBGenel_Indirim_Miktar: TFloatField;
    CARI_KART_DBGenel_Indirim_Orani: TFloatField;
    CARI_KART_DBGenel_Vade_Suresi: TFloatField;
    CARI_KART_DBGenel_Acilis_Bakiyesi: TFloatField;
    CARI_KART_DBIletisim_Isim: TStringField;
    CARI_KART_DBIletisim_Adres: TStringField;
    CARI_KART_DBIletisim_Telefon_1: TStringField;
    CARI_KART_DBIletisim_Telefon_2: TStringField;
    CARI_KART_DBIletisim_Fax: TStringField;
    CARI_KART_DBIletisim_E_Posta: TStringField;
    CARI_KART_DBIletisim_Web_Adres: TStringField;
    CARI_KART_DBEkleyen: TStringField;
    CARI_KART_DBKayit_Tarihi: TDateTimeField;
    CARI_KART_DBCalisilan_Firma_ID: TStringField;
    CARI_KART_DBLogo_Yol: TStringField;
    CARI_KART_DBCari_Muh_Hesabi: TStringField;
    CARI_KART_DBAlinan_Cekler_Hesabi: TStringField;
    CARI_KART_DBVerilen_Cekler_Hesabi: TStringField;
    CARI_KART_DBBorc_Tutari: TFloatField;
    CARI_KART_DBAlacak_Tutari: TFloatField;
    CARI_KART_DB_SOURCE: TDataSource;
    RzPageControl1: TRzPageControl;
    TabSheet1: TRzTabSheet;
    TabSheet2: TRzTabSheet;
    RzMemo1: TRzMemo;
    AYARLAR_DB: TADOQuery;
    AYARLAR_DBSMS_OPARATOR: TStringField;
    AYARLAR_DBSMS_USER_NAME: TStringField;
    AYARLAR_DBSMS_PASSWORD: TStringField;
    AYARLAR_DBSMS_ORGINATOR: TStringField;
    AYARLAR_DBMAIL_HOST_NAME: TStringField;
    AYARLAR_DBMAIL_KULLANICI_ADI: TStringField;
    AYARLAR_DBMAIL_SIFRE: TStringField;
    AYARLAR_DBMAIL_GORUNEN_AD: TStringField;
    AYARLAR_DBMAIL_PORT: TBCDField;
    AYARLAR_DBMAIL_SMTP_SIFRE: TStringField;
    AYARLAR_DBMAIL_SMTP_KULLANICI_AD: TStringField;
    RzMemo2: TRzMemo;
    StatusBar1: TStatusBar;
    ListBox1: TListBox;
    DBGrid3: TDBGrid;
    Edit3: TEdit;
    SpeedButton2: TSpeedButton;
    Memo1: TMemo;
    procedure Edit3Change(Sender: TObject);
    procedure DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure Kapat_btnClick(Sender: TObject);
    procedure DBGrid3DblClick(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
    procedure RzMemo1Change(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure DBGridMouseWheel(Sender: TObject; Shift: TShiftState;
      WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure TabSheet2Enter(Sender: TObject);
    procedure DBGrid3MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure DBGrid3TitleClick(Column: TColumn);

  private
    { Private declarations }
  public
    { Public declarations }  
    end;
 TWheelDBGrid = class(TDBGrid)
  public
    property OnMouseWheel;
   end;

var
  SMS_TOPLU_GONDER: TSMS_TOPLU_GONDER;

implementation

uses StrUtils, Unit4;

    type
    TCustomDBGridCracker = class(TCustomDBGrid);

{$R *.dfm}

/////MOUSE İLE KAYDIRMA
function GetNumScrollLines: Integer;
begin
  SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @Result, 0);
end;

procedure TSMS_TOPLU_GONDER.DBGridMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
  Direction: Shortint;
begin
  Direction := 1;
  if WheelDelta = 0 then
    Exit
  else if WheelDelta > 0 then
    Direction := -1;

  with TDBGrid(Sender) do
  begin
    if Assigned(DataSource) and Assigned(DataSource.DataSet) then
      DataSource.DataSet.MoveBy(Direction * GetNumScrollLines);
    Invalidate;
  end;
end;
///////////////////////////////SONNNNN


/////////////////kaynak sms modülü için gerekli
function xmlpost(url, postdata: string): String;
var IdHTTP1: TIdHTTP;
str1:TStringList;
begin
  try
    try
        IdHTTP1:=TIdHTTP.Create(nil);
        str1:=TStringList.Create;
        str1.Text:=postdata;
        result:=IdHTTP1.Post(url, str1);
    except
    end;
  finally
    FreeAndNil(str1);
    FreeAndNil(IdHTTP1);
  end;
end;


procedure TSMS_TOPLU_GONDER.Edit3Change(Sender: TObject);
begin
    CARI_KART_DB.Close;
    CARI_KART_DB.SQL.Clear;
    CARI_KART_DB.SQL.Add('SELECT * FROM CARI_KART_LISTE');
    CARI_KART_DB.SQL.Add('WHERE Genel_Cari_Unvan');
    CARI_KART_DB.SQL.Add('LIKE ''%'+Edit3.Text+'%''');
    CARI_KART_DB.Sql.Add('and Calisilan_Firma_ID = '''+Ana_Pencere.DBEdit6.Text+''' ');
    CARI_KART_DB.Open;
end;

procedure TSMS_TOPLU_GONDER.DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with TCustomDBGridCracker(DBGrid3) do
    if DataLink.ActiveRecord = Row - 1 then
      Canvas.Brush.Color := clScrollBar
    else
      Canvas.Brush.Color := clHighlightText;
  DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end; 

procedure TSMS_TOPLU_GONDER.Kapat_btnClick(Sender: TObject);
begin
close;
end;

procedure TSMS_TOPLU_GONDER.DBGrid3DblClick(Sender: TObject);
begin
   if CARI_KART_DBIletisim_Telefon_2.Text=''
   then ShowMessage('    Eklenecek Numara Bulunamadı    ') else
begin
   //  RzMemo2.Lines.Add('<no>'+CARI_KART_DBIletisim_Telefon_2.Text+'</no>');
     ListBox1.Items.Add('<no>'+CARI_KART_DBIletisim_Telefon_2.Text+'</no>')
  end;
end;

procedure TSMS_TOPLU_GONDER.SpeedButton2Click(Sender: TObject);
var
   str: tstringlist;
   response: tstringstream;
   xsml:String;
   degisken:String;
begin
    if RzMemo1.MaxLength<=6
    then ShowMessage('Lütfen En Az 6 Karakter Mesaj Giriniz.') else
begin

   str:= TStringList.Create;
   Response:= TStringStream.Create('');
try
   str.Clear;
   RzMemo1.Lines.Text :=AnsiReplaceText(RzMemo1.Lines.Text,'ı','i');
   RzMemo1.Lines.Text :=AnsiReplaceText(RzMemo1.Lines.Text,'İ','i');
   RzMemo1.Lines.Text :=AnsiReplaceText(RzMemo1.Lines.Text,'ş','s');
   RzMemo1.Lines.Text :=AnsiReplaceText(RzMemo1.Lines.Text,'ö','o');
   RzMemo1.Lines.Text :=AnsiReplaceText(RzMemo1.Lines.Text,'ü','u');
   RzMemo1.Lines.Text :=AnsiReplaceText(RzMemo1.Lines.Text,'ç','c');
   RzMemo1.Lines.Text :=AnsiReplaceText(RzMemo1.Lines.Text,'ğ','g');
except
   on e: exception do begin
 end;
end;
   str.Free;
   Response.Free;
        xsml:=
         '<mainbody>'
        +'<header>'
        +'<company>'+AYARLAR_DB.FieldByName('SMS_OPARATOR').Text+'</company>'
        +'<usercode>'+AYARLAR_DB.FieldByName('SMS_USER_NAME').Text+'</usercode>'
        +'<password>'+AYARLAR_DB.FieldByName('SMS_PASSWORD').Text+'</password>'
	    	+'<startdate></startdate>'
	    	+'<stopdate></stopdate>'
	      +'<type>1:n</type>'
        +'<msgheader>'+AYARLAR_DB.FieldByName('SMS_ORGINATOR').Text+'</msgheader>'
        +'</header>'
	    	+'<body>'
	    	+'<msg><![CDATA['
        +RzMemo1.Lines.Text
        +']]></msg>'
       // +ListBox2.Items.Text
        + Memo1.Text
        //        +'<no>XXXXXXXXXXXX</no>'
        //        +'<no>XXXXXXXXXXXX</no>'
	      +'</body>'
        +'</mainbody>';
        degisken:=xmlpost('http://api.XXXXXXXXXXX.com.tr/xmlbulkhttppost.asp',xsml);
        if degisken='10'
        then ShowMessage('    Telefon Numarası Hatalı    ') else
        
        if degisken='20'
        then ShowMessage('    Mesaj Metninde boş olmasından veya maksimum mesaj karakterini geçildi    ') else
        if degisken='30'
        then ShowMessage('    Kullanıcı bilgisi bulunamadı    ') else
        if degisken='40'
        then ShowMessage('    Geçersiz Mesaj Başlığı (başlık sistem e tanımlanmamış)    ') else
        if degisken='50'
        then ShowMessage('    Yetersiz Kredisi Lütfen Kredi Yükleyiniz    ') else
        if degisken='60'
        then ShowMessage('    Telefon Numarası hiç tanımlanmamış    ') else
        if degisken='70'
        then ShowMessage('    Mesaj Başlığı hatalı    ') else

        begin
        ShowMessage('    Mesaj Başarıyla Gönderildi    ');
     end;
  end;
end;

procedure TSMS_TOPLU_GONDER.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
AYARLAR_DB.Close;
end;

procedure TSMS_TOPLU_GONDER.FormShow(Sender: TObject);
begin
TabSheet1.Show;
  Edit3.Clear;
  RzMemo1.Clear;
  AYARLAR_DB.Open;
  CARI_KART_DB.Open;
 if RzMemo1.Text<>'' then
StatusBar1.Panels[0].Text:='Karakter Sayısı: '+IntToStr(Length(RzMemo1.Text))
else
StatusBar1.Panels[0].Text:='Karakter Sayısı: 0';
end;

procedure TSMS_TOPLU_GONDER.ListBox1DblClick(Sender: TObject);
var
   i: integer;
begin
   for i := ListBox1.Items.Count - 1 downto 0 do
   if ListBox1.Selected[i] then
   ListBox1.Items.Delete(i);
end;

procedure TSMS_TOPLU_GONDER.RzMemo1Change(Sender: TObject);
begin
 if RzMemo1.Text<>'' then
StatusBar1.Panels[0].Text:='Karakter Sayısı: '+IntToStr(Length(RzMemo1.Text))
else
StatusBar1.Panels[0].Text:='Karakter Sayısı: 0';
end;

procedure TSMS_TOPLU_GONDER.FormKeyPress(Sender: TObject; var Key: Char);
begin
         if Key=#27 then
         Close;
end;

procedure TSMS_TOPLU_GONDER.FormCreate(Sender: TObject);
begin
  TWheelDBGrid(DBGrid3).OnMouseWheel := DBGridMouseWheel;
end;

procedure TSMS_TOPLU_GONDER.TabSheet2Enter(Sender: TObject);
begin
    Memo1.Text:= ListBox1.Items.DelimitedText;
    Memo1.text:=StringReplace(trim(Memo1.Text), ',', '', [rfReplaceAll]);
end;

procedure TSMS_TOPLU_GONDER.DBGrid3MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var
  pt: TGridcoord;
begin
  pt:= DBGrid3.MouseCoord(x, y);

  if pt.y=0 then
    DBGrid3.Cursor:=crHandPoint
  else
    DBGrid3.Cursor:=crDefault;

end;

procedure TSMS_TOPLU_GONDER.DBGrid3TitleClick(Column: TColumn); 
{$J+}
 const PreviousColumnIndex : integer = -1;
{$J-}
begin
  if DBGrid3.DataSource.DataSet is TCustomADODataSet then
  with TCustomADODataSet(DBGrid3.DataSource.DataSet) do
  begin
    try
      DBGrid3.Columns[PreviousColumnIndex].title.Font.Style :=
      DBGrid3.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
    except
    end;

    Column.title.Font.Style := 
    Column.title.Font.Style + [fsBold];
    PreviousColumnIndex := Column.Index;

    if (Pos(Column.Field.FieldName, Sort) = 1)
    and (Pos(' DESC', Sort)= 0) then
      Sort := Column.Field.FieldName + ' DESC'
    else
      Sort := Column.Field.FieldName + ' ASC';
  end;

end;

end.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen White Rose »

ben daha önce bu koda benzer bir script ile toplu sms gönderiyordum, ancak sms aldığımız servis kapanınca bizim kod işe yaramaz oldu. Dediğim gibi servisler arasında da kod farklılığı olabiliyor. Her servise göre de kod yazamazsınız. Ya bir-iki servisin kodunu seçmeli olarak programlarınız ekleyeceksiniz yada 3G Modem+sim kartı ile bu işi yapacaksınız. Ama her halukarda ve internet de gerekmeyeceği için 3G modem+sim kart ile bu işi yapmak daha pratik diye düşünüyorum.
Arkadaşların fikirlerini ve katkılarını bekliyorum.
Hala modemi tanıtabilmiş değilim. :?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen SimaWB »

3G Modem konusunda değil ama toplu SMS gönderimi konusunda bir tavsiyem var:
Kendi web servisinizi yazın. Yazılımınız sizin yazdığınız web servisle haberleşsin. Sizin web servis de toplu SMS hizmeti veren servislerle haberleşsin.
Biraz daha zaman alıcı olabilir ama toplu SMS servislerinden bağımsız hale getirmiş olursunuz.
There's no place like 127.0.0.1
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen White Rose »

Maalesef kendi web servisimi kurabilme imkan ve ihtimali yok
Bu yüzden bu 3G modemi kurmak zorundayım. :?
Bana bu konu ile ilgili destek ve bilgi lazım :wink:
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen White Rose »

S.A.
Arkadaşlar öğrendiğime göre turkcell winn 3G'nin yeni modelleri direk internete bağlanabildiğinden modem olarak bilgisayarda gözükmüyor.
ganimetro
Üye
Mesajlar: 2
Kayıt: 08 Ara 2015 02:49

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen ganimetro »

Bence bunlarla uğraşıp vakit kaybetmek yerine toplu mesaj göndermek adına http://www.mutlucell.com.tr gibi firmalarla çalışılmasını ben daha doğru buluyorum. Bilmem siz ne düşünüyorsunuz ?
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen erdogan_ozkaya »

reklam gibi olmuş biraz :)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen mrmarman »

Daha önce hiç GSM modem kullanmamış birisi olarak yazıyorum. Internetten sadece küçük bir araştırma yaptım.

Madem bu modemi kullanmak zorunda hissediyorsun, yerinde olsam (eğer varsa) modem ağ arayüzüne (hani 192.168.1.1 gibisinden) giriş imkanı varsa onu denerdim. :idea: Ağ arayüzü üzerinden SMS yollama vs. yolu varsa denemek için...

Bu imkan varsa da yoksa da, illa ki modem ile haberleşip SMS yollayan bir yazılımı olacaktır, bunun haberleşme paketlerini (ümid ederim SSL değildir) erişimini takibe alıp protokolü anlamaya çalışırdım. En azından bu paketlerin REQUEST adresini öğrenir araştırmaya başlangıç noktası olarak o bilgiye internet üzerinden yüklenirdim. :idea:

Ama ben olsam asıl ne yapardım, SIM kartı bir Android telefona takar ona arayüz yazardım. DATASNAP, TCP vb. hangisi sana kolay geliyorsa telefondaki kendi yazılımım ile irtibat kurar ona semer takıp SMS'leri onun üzerinden yollardım.
:arrow: Ne yapardım, Android üzerindeki yazılımdan basit bir SQLite veritabanı oluşturmasını, gönderdiğim taleplerin oraya birikmesini ve verdiğim zaman aralığında bu birikenleri sırayla veya 20'şerli gruplar halinde mobil şebekeden yayınlardım. :)

Başarılar.
Resim
Resim ....Resim
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen mustafasoy »

muharrem beyin son söylediği şekilde bir çözüm yazmıştım ama
artık internetin olmadığı yer yok gibi postaguvercini.com gibi sitelerin apilerini kullanarak kolaylık sms göndermek mümkün üstelik operatörlerden çok daha ucuz.
wp:=TWebBrowser.Create(self);
wp.Navigate('http://www.postaguvercini.com/api_http/ ... d='+pgpass+
'&gsm='+gsm+'&text='+msg);
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
erdogan_ozkaya
Üye
Mesajlar: 839
Kayıt: 03 Eki 2007 02:00

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen erdogan_ozkaya »

arkadaşlar, arkadaş soru cevap aramıyor, sitesinin reklamını yapıyor :((
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: 3G Modemler ve Toplu SMS gönderme

Mesaj gönderen mrmarman »

Zaten biz de hem konuyu merak edene çözümResim, hem de izinsiz ürün yerleştirmeye kırma uygulamış oluyoruz. Resim

Boşa gitmiyor yani.
Resim
Resim ....Resim
Cevapla