|
||
| Gerekenler 1. Delphi 6 2. Smtp server adresleri Şimdi birşeyler yapmaya başlayalım.Öncelikle formumuzu düzenleyelim Formumuza öncelikle Fasnet Component tabındaki NMSMTP componentini yerleştiriyoruz. Ardından 3 tane editbox 1 tane memo 1 tane combobox 1 tane spinedit 3 tane label ve 1 tane de button yerleştiriyoruz. Comboboxımızın items kısmına kullanacağımız smtp serverlarını yazıyoruz mesela:Gmail ve Yahoo bunları seçerken dikkat etmemiz gereken tek şey elmizde bu adresin smtp serverı mevcutmu?. Form a istediğiniz görünümü verdikten sonra geri kalan işlerimizi kodlarla halletmemiz gerekiyor. Butonumuzun onclick olayını aşağıdaki gibi düzenliyoruz. procedure TForm1.Button1Click(Sender: TObject); begin Nmsmtp.Connect;//Az sonra belirteceğim smtp serverına bağlanıyoruz. end; Comboboxımızın OnChange olayını aşağıdaki şekilde düzenliyoruz Bu işlem kullanıcımızın mail yollayacağı adresin smtp serverını ayarlamamıza yarayacaktır. procedure TForm1.cb1Change(Sender: TObject); begin if cb1.ItemIndex=0 then Nmsmtp.Host:='mx3.mail.yahoo.com';//comboboxın ilk itemi yani yahoo seçili ise smtp serverını atıyoruz. if cb1.ItemIndex=1 then Nmsmtp.Host:='gsmtp171.google.com';//comboboxın ikinci itemi yani gmail seçili ise smtp serverını atıyoruz. end; Şimdi herşeyi hallettik mailımızı yollamamız gerekiyor. Yapmamız gereken şey smtp server a send komutu vermektir. NMsmtp server ın OnConnect olayını aşağıdaki şekilde düzenliyoruz... procedure TForm1.mailConnect(Sender: TObject); begin Nmsmtp.PostMessage.ToAddress.Text:=edit1.Text;// Gönderilecek adresimizi edit1 in textinden aktarıyoruz Nmsmtp.PostMessage.Subject:=edit2.Text;//Göderilecek konuyu edit2 nin text inden aktarıyoruz Nmsmtp.PostMessage.FromAddress.Text:=edit3.Text;//Göderenin mail adresini edit3 ün textinden aktarıyoruz Nmsmtp.PostMessage.Body.Text:=memo1.Lines.Text;// gönderilecek konuyu memo1 in içeriğinden alıyoruz label1.Caption:='Bağlı';//Server a bağlandığımızı bize bildirmesi için label1de belirtiyoruz. Nmsmtp.SendMail;// ve mail ımızı yolluyoruz. end; Son olarak başarılı olup olmadığımızı öğrenme zamanı geldi. Bunun için Nmsmtp serverın OnSuccess olayını şöyle düzenliyoruz. procedure TForm1.mailSuccess(Sender: TObject); begin Nmsmtp.Disconnect;//server ile bağlantımızı kesiyoruz. label2.Caption:='OK';//bunu anlamak için label2 aracılığı ile kendimizi bilgilendiriyoruz. end; Buraya kadar yalnızca bir mail yollamanın nasıl yapılacağını hep birlikte öğrendik.Bu yöntemle karşımızdaki kişiye fake mail yollayabiliriz. Gerekli html kodlarını memo1 diye adlandırdığımız bölüme yazarsak ve edit 3 diye adlandırdığımız bölüme mailın kimden gittiğini belirtirsek gayet güzel bir fake mail yollamış olursunuz.Yukardaki anllattığım program yalnızca Gmail ve Yahoo ya mail yollar diğer serverlara mail yollamak için combobox a girdiğimiz smtp serverlarına ekleme yapabilirsiniz. Şimdi birden fazla mail ı otomatik olarak yollamayı öğrenelim. Aynı kodlara birkaç eklenti yaptığımızda sorunumuz çözülecektir. Formumuza kaç mailın başarılı bir şekilde yollandığını görmemizi sağlayacaak bir label daha ekleyelim. Ve Nmsmtp serverın OnSuccess olayını şu şekilde değiştirelim. procedure TForm1.mailSuccess(Sender: TObject); var x:integer;//sayaç olarak kullanacağımız bir tam sayı değişkeni tanımlıyoruz. begin Nmsmtp.Disconnect;//server ile bağlantımızı kesiyoruz. label7.Caption:='OK';/bunu anlamak için label2 aracılığı ile kendimizi bilgilendiriyoruz. x:=x+1;//Tanımladığımız değişkeni başarılı bir işlem yaptığımız için 1 arttırıyoruz. label3.Caption:=inttostr(x);//label3'e değişkenimizin değerini string'e çevirerek atıyoruz. if se1.Value<>x then//eğer spineditte belirttiğimiz değer le değişkenimiz eşit değilse Nmsmtp.Connect;//smtp serverımıza yeniden bağlanıyoruz. Bu işlem Spineditte belirttiğimiz değerle değişkenimizin değeri edşitleninceye kadar devam edecektir. end; Alıntıdır... |
||