26 Apr

C# Yazılarım Üzerine

Sitede bulunan, C# üzerine yazmış olduğum yazılar artık güncelliğini kaybetmek üzere (belki de kaybetmiştir).
Bundan sonra da C# üzerine yazı hazırlamayı pek düşünmüyorum. Çünkü C# kullanmayalı uzun bir zaman oldu (en son .Net 3.5 vardı, şimdi hangi sürüm var bilmiyorum ).
Yazıları kaldırmak istemiyorum, hala faydalananlar olabilir düşüncesi ile yazıları tutuyorum.

Bilgilerinize.

26 Mar

PHP-GTK örnek uygulama

Kodlarda yeteri kadar açıklama mevcut diye düşünerekten ayrıca bir açıklama yazmayacağım.
Bu kodların sadece linuxda çalışabileceğini de ekleyeyim.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
/**
 * @author Ersin DOĞAN http ://www.ersindogan.com
 * Gmail posta kontrolü yapan basit bir servis
 */

class GmailServis {
   /**
    * gmail kullanıcı adı
    *
    * @var string
    */

   protected $_kullanici = null;
   /**
    * gmail şifre
    *
    * @var string
    */

   protected $_sifre = null;
   /**
    * gmail feed adresi , öntanımlı olan yeterli şimdilik
    *
    * @var string
    */

   protected $_servis_url = null;
   /**
    * Objenin kurucu metodu
    *
    * @param string $kullanici
    * @param string $sifre
    * @param string $servis_url
    */

   public function __construct($kullanici, $sifre, $servis_url = 'https://mail.google.com/mail/feed/atom') {
      $this->_kullanici = $kullanici;
      $this->_sifre = $sifre;
      $this->_servis_url = $servis_url;
      if (empty ( $this->_kullanici ) || empty ( $this->_sifre ) || empty ( $this->_servis_url )) {
         throw new Exception ( "Kullanıcı adı , şifre veya servis adreslerinden birini eksik girdiniz" );
      }
   }
   /**
    * Posta kutusunu kontrol eder
    *
    * @return SimplXMLElement
    */

   public function kontrol_et() {
      $_c = curl_init ( $this->_servis_url );
     
      curl_setopt ( $_c, CURLOPT_USERPWD, $this->_kullanici . ':' . $this->_sifre );
      curl_setopt ( $_c, CURLOPT_HTTPAUTH, CURLAUTH_ANY );
      curl_setopt ( $_c, CURLOPT_SSL_VERIFYPEER, 0 );
      curl_setopt ( $_c, CURLOPT_RETURNTRANSFER, 1 );
     
      return simplexml_load_string ( curl_exec ( $_c ) );
   
   }
}


class GmailKontrol extends GtkWindow
{
   /**
    *
    *
    * @var GtkVBox
    */

   protected $kutu;
   /**
    *
    *
    * @var integer
    */

   protected $durum;
   /**
    *
    *
    * @var GtkLabel
    */

   protected $eposta_durum;
   /**
    *
    * @var GtkStatusIcon
    */

   protected $status_icon;
   /**
    *
    * @var GmailServis
    */

   protected $servis;
   
    function __construct()
    {
        parent::__construct();

        $this->set_default_size(200,200);
        $this->set_position(Gtk::WIN_POS_CENTER_ALWAYS);
        $this->set_title('.::Gmail E-Posta Kontrol::.');
        $this->connect_simple('destroy', array('gtk', 'main_quit'));
        $this->add($this->__create_box());
        $this->hide_all();
    }
   /**
    * arayüzü oluşturuyoruz
    *
    * @return GtkVBox
    */

    protected function __create_box()
    {
      $this->kutu = new GtkVBox ( );
      $this->eposta_durum = new GtkLabel ( "GKontrol - Gmail Eposta Kontrol Aracı" );
      $this->kutu->pack_start ( $this->eposta_durum );
      $this->status_icon = new GtkStatusIcon ( );
      $this->status_icon->set_from_stock ( Gtk::STOCK_NO );
      $this->status_icon->set_tooltip_text ( 'Gmail E-Posta Kontrol' );
      $this->status_icon->connect ( 'activate', array ($this, 'on_activate' ) );
      $this->durum = 0;
      return $this->kutu;
    }
   
    /**
     * mailleri kontrol ederek
     * mail geldiğinde bizi uyarıyor.
     *
     */

   public function mail_kontrol(){
      $durum=$this->servis->kontrol_et();
      if($durum->fullcount>0){
         $this->bildirim('GPosta','Okunmammış '.$durum->fullcount.' epostanız mevcut');
         $this->status_icon->set_from_stock(Gtk::STOCK_YES);
         $this->status_icon->set_blinking(true);
      }else {
         $this->bildirim('GPosta','yeni eposta yok');
      }
   }
   /**
    * notification iconuna tıklandığında
    * çalışan metotdur
    *
    * @param  $statusicon
    */

   public function on_activate($statusicon) {
      if ($this->durum) {
         
         $this->hide_all ();
         
         $this->durum = 0;
     
      } else {
         
         $this->show_all ();
         $this->status_icon->set_from_stock(Gtk::STOCK_NO);
         $this->status_icon->set_blinking(false);
         $this->durum = 1;
     
      }
   
   }
   /**
    * bildirim başlığı
    *
    * @param string $baslik
    * @param string $bildirim
    */

   public function bildirim($baslik,$bildirim){
         // notify-send bir linux aracıdır ve bunu sisteminizde yoksa kurmalısınız
         // sudo apt-get install libnotify-bin
         // komutu ile
      $komut=sprintf('notify-send "%s" "%s" -t 1',$baslik,$bildirim);
      system($komut);
   }
   
   public function servisAyarla(GmailServis $servis){
      $this->servis=$servis;
   }
}

$gKontrol=new GmailKontrol();

$gServis=new GmailServis ( 'kullanıcı-adı', 'şifre' );

$gKontrol->servisAyarla($gServis);
/**
 * Gtk::timeout_add metodu, zamanlayıcı özelliği ile
 * bize, belirli aralıklarda gmail
 * posta kutusunu yoklama şansını veriyor
 */

Gtk::timeout_add(2000, array($gKontrol,'mail_kontrol'));
Gtk::main();
25 Mar

PHP-GTK2 Karakter Problemi

PHP-GTK nin birinci versiyonunda ingilizce haricinde karakterler kullanıldığında ( yerine göre ) sistem çalışmayı bile durdurabiliyordu.
II. sürüm ile daha fazla destek ve yeni özellik gelmek ile birlikte , karakter problemini gidermek de kolaylaştı.
php.ini dosyanızın içerisine :

php-gtk.codepage = utf8

yazmanız karakter problemini çözecektir.

06 Oct

C# ile MySql de Stored Procedure Çalıştırmak

Daha önce burada kısaca değinmiş olduğum stored procedure örneğini burada çalıştırarak C# ile MySql de stored procedure oluşturmasını ve çalıştırılma şeklini göreceğiz. Şimdi geçelim örneğimize.

MySql de stored procedure çalıştırabilmek için ihtiyaç duyacağımız nesneler şunlar:

  • MySqlConnection 
  • MySqlCommand 
  • MySqlParameter

MySql deki stored procedure çalıştırmanın MsSqldekindeki tek farkını verilen parametrelerin başına “@” yerine “?” ekleyerek parametrelere atama yapılması olarak özetlesem ayıp olmaz herhalde 🙂 . Elbetteki daha fazla farklılıklar mevcut ama ben burada sadece en çok gözüme ilişen şeyi örnek aldım. Şimdi bu procedure MsSql de olsaydı Parameter nesnemiz şöyle olacaktı:

SqlParameter ParamA = new SqlParameter(“@a”, System.Data.SqlDbType.Int);

MySql de ise parametre oluşturabilmek için:

MySqlParameter ParamA = new MySqlParameter(“?a”, MySqlDbType.Int32);

biçiminde bir tanımlama yapmamız gerekmekte. Bunun haricinde aynı biçimde procedure gönderilen verinin yönü (IN , OUT veya INOUT) ve parametre değeri ataması yapılmakta:

ParamA.Direction = System.Data.ParameterDirection.Input;  //MsSql

ParamA.Value = a;

ParamA.Direction = System.Data.ParameterDirection.Input;  // MySql

ParamA.Value = a;

MySql de değişen başka bir nesne de komut nesnesi. MySql e gönerilecek sorgunun oluşturulmasını sağlayan komut nesnesi şöyle oluşturulmaktadır:

MySqlCommand komut=new MySqlCommand(“dortislem”, baglanti);

komut.CommandType = System.Data.CommandType.StoredProcedure; //komut tipimizi de belirledik

şimdi sıra geldi procedurumuz için gerekli olan diğer iki parmetreyi tanımlayarak komut nesnemizin parametrelerine ekledikten sonra sorguyu çalıştırıp dönen veriyi ekrana basmak.

Yapmış olduğum ufak bir konsol uygulama örneğini buraya  ekledim. Faydalı bir yazı olmuştur umarım.

29 Jul

C# ile MySql

ADO .NET in esnek ve becerikli yapısı Mysqlde işlem yaparken de bize kolaylık sağlamakta. Burada, yeni özelliklerinden dolayı (trigger,transaction,stored procedure vb) Mysql5 versiyonunu baz alarak anlatacağım. Bu arada mysql i indirip kurduğunuzu farz ederek anlatıyorum.
Mysql veritabanına bağlanabilmek ve üzerinde işlem yapabilmek için öncelikle .NET Connector ü indirip kurmanız gerekiyor.
Connectoru kurduktan sonra Visual Studioyu açarak bir Console uygulaması (MysqlTest) oluşturalım. Burada Mysql connectoru hangi klasöre kurduysanız, Visual Studio da Project>Add Reference den Browse ile o klasör içerisindeki “Mysql.Data.dll” i projeye eklemeniz gerekmekte. Daha sonra aşağıdaki kodları deneyebilirsiniz.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System;
using System.Collections.Generic;
using System.Text;
//mysql kütüphanelerimizi yüklüyoruz
using MySql.Data;
using MySql.Data.MySqlClient;
namespace MysqlTest
{
    class Program
    {
        MySqlConnection baglanti;   // bağlantı nesnemiz
        MySqlDataReader okuyucu; //  okuyucu nesnemiz
        MySqlCommand komut;     //    komut nesnemiz
        public Program()
        {
          baglanti = new MySqlConnection
("server=localhost;database=test;user=root;password=;");
        }

        public void basla()
        {
            Console.WriteLine("Mysql test uygulaması başlatıldı...");
            try
            {
                baglanti.Open();
                Console.WriteLine("Bağlantı açıldı...");
                Console.WriteLine("Veritabanları listeleniyor...");
                this.komutCalistir("show databases");

                Console.WriteLine("İşlem başarıyla tamamlandı...");
                Console.ReadLine();
            }
            catch (MySqlException myex)
            {
                Console.WriteLine("Veritabanına bağlanamadı.Hata sebebi:");
                Console.WriteLine(myex.Message);
                Console.ReadLine();
            }
        }

        public void komutCalistir(string komut)
        {
            this.komut = new MySqlCommand(komut, baglanti);
            okuyucu = this.komut.ExecuteReader();
            this.oku(okuyucu);
        }

        private void oku(MySqlDataReader sonuc)
        {
            try
            {
                while (sonuc.Read())
                {
                    Console.WriteLine(sonuc[0].ToString());
                }
                sonuc.Close();
            }
            catch (MySqlException me)
            {
                Console.WriteLine(me.Message);
            }
            finally
            {
                baglanti.Close();
            }
        }
        static void Main(string[] args)
        {
            Program Test = new Program();
            Test.basla();
        }
    }
}

Bu test uygulaması ile veritabanına bağlanarak veritabanlarını listelemekteyiz. Gördüğünüz gibi çok fazla çaba sarf etmeden Mysql üzerinde de rahatlıkla işlem yapabilmekteyiz. Tabi bunun en büyük rolü, başta da belirttiğim gibi ADO üstleniyor. Umarım bu kısa yazı C# ile Mysql giriş için iyi bir örnek olmuştur sizin için.

29 Jul

PHP-GTK ile ekran görüntüsünü (Screenshot) almak

Başlığa bakıp da, “hadi ya, bu nasıl olacak” diyen olmuştur sanırım. Bu tam olarak PHP-GTK işbirliği ile olabilecek birşey değil, en azından bildiğim kadarıyla 😉
Bu fikrin tamamen can sıkıntısı mahsülü olduğunu belirtmeden geçemeyeceğim.
Bu işlemi yapabilmek için şunlara ihtiyacınız var:

  • Buradan temin edebileceğiniz, php-gtk2 çalıştırılabilir dosyaları (indirin ve sadece bir klasöre açın hepsi bu kadar, ne ekstra bir ayar ne de başka birşey gerekmiyor)
  • .NET Framework hayda bu da nerden çıktı dediğinizi duyar gibiyim,az sabır 🙂 anlatacağım
  • Bu iş için hazırlanmış ve bize yardım edecek dll dosyamız

Daha önce sistem çekmecesine yerleşen uygulamamızdaki örneği kullanacağım burda. Bunu yaparken de, PHP-GTK çalışıtırılabilirlerini indirip bir klasöre açtığınızı, .NET Framework u indirip kurduğunuzu, linkini vermiş olduğum dosyayı indirdikten sonra, .NET Framework içerisinde bulunan “regasm.exe” yardımıyla “Ekran.dll” dosyamızı kayderttiğimizi (regasm /tlb:ekran.tlb ekran.dll komutuyla) farz ediyorum 😉 şimdi başlayalım:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php

/*
* Daha önce verdiğimiz örnekteki tek değişiklik
* Ekran.dll kütüphanesindeki nesneyi oluşturup kurmamızdır
**/
$NETObjem = new COM("Ekran.Ekran");
$pencere = new GtkWindow();
$pencere->set_title("Örnek Pencere başlığım");
$pencere->set_size_request(240, 120);
$pencere->set_position(Gtk::WIN_POS_CENTER_ALWAYS);
$pencere->connect_simple('destroy', array('Gtk','main_quit'));
$pencere->add($vbox = new GtkVBox());
$vbox->pack_start(
new GtkLabel("Sistem çekmecesindeki ikona tıkladınız!"));
$vbox->pack_start(
new GtkLabel("Gizlemek için birkez daha tıklayın."));
// sistem çekmecesine yerleşecek ikonu ayarlıyoruz
// işte yeni versiyondaki yenilik ve büyük kurtarıcı
$statusicon = new GtkStatusIcon();
// Sistem çekmecesinde görünecek ikonumuzu seçiyoruz
<a href=http://gtk.php.net/manual/en/gtk.enum.stockitems.php target=_blank> burdan da </a>görebileceğeniz gibi PHP-GTK2 içerisinde
// onlarca hazır ikon bulunmaktadır
$statusicon->set_from_stock(Gtk::STOCK_HOME);
// sistem çekmecesindeki ikon üzerine gelindiğinde
// görüntülenecek ipucuyu ayarlıyoruz.
$statusicon->set_tooltip(?Pencereyi gormek için sol tıklayın?);
$app_status = 0;
// sistem çekmecesindeki ikona sol tıkladığımızda bir olay
// gerçekleşir (signal) ve bu olay karşılığında çalışmasını
// istediğimiz işlevi atıyoruz (callback)
$statusicon->connect(?activate?, ?on_activate?);
$pencere->hide_all();
Gtk::main();
function on_activate($statusicon) {
global $pencere, $app_status;
 if ($app_status) {
$statusicon->set_tooltip(?Pencereyi görmek için sol tıklayın?);
$pencere->hide_all();
/*
* Penceremizi gizliyoruz ve ekran görüntümüzü
* alıyoruz, hepsi bukadar
**/
$NETObjem->Cek();
$app_status = 0;
} else {
 $statusicon->set_tooltip(?Pencereyi görmek için?);
  $pencere->show_all();
  $app_status = 1;
 }
}
?>

Biliyorum, Print+Screen tuşu ile kolayca yapabileceğimiz bu işi böyle eziyete dönüştürmek istemeyenimiz olacaktır. Fakat burda asıl amacım PHP nin yeteneklerini sergileyebilmekti. Umarım anlatabilmeyi başarmışımdır. Ayrıca bu uygulamanın windowsta (şimdilik) çalıştığını belirtsem fena olmaz sanırım.

27 Jul

Barkod belası

Barkodu herkes günlük yaşamında görüyordur sanırım, markette, işe girerken kullanılan giriş kartlarında, faturalarda,kitapların,gazetelerin,dergilerin üzerinde v.b.
Dikey olarak, belirli aralıklarla, beyaz zemin üstüne çizilmiş, değişik kalınlıktaki siyah çizgiler. Sanırım hatırladınız. Bu çizgilerin oluşması için farklı standartlar bulunmakta (araştırmalarımdan öğrenebildiğim kadarıyla 22 farklı standart bulunmakta).
Barkod yazdırmaya ihtiyaç duyduğumda, bu karmaşık işin altından kalkabilmek için biraz araştırma yapmam gerekti. Birçok arayan gibi ilk soluğu Google da aldım tabi.
İşime yarayacak barkod tipinin Code39 olduğuna karar verdikten sonra araştırmalarımı bu yöne kaydırdım. Birçok bileşen buldum, ama bulduğum bileşenler ya paralıydı ya da işime yaramadı. Ve en sonunda kolayca, bir bileşene gerek kalmaksızın Code39 formatında barkod çıktısı alabilmenin bir yolunu buldum.
Free3of9 yazı tipi ile Code39 biçiminde barkod çıktısı alınabilmekte. Matthew Welch tarafından hazırlanan bu yazı tipinde Code39 un tüm maharetlerini sergileyememesine rağmen, 0-9 arası rakamları kolaylıkla yazdırabildim.
ilk önce Free3of9 yazı tipini indirip , C:WindowsFonts klasörüne kopyalamanız gerekiyor. Ardından Visual Studioyu açıp bir WindowsApplication projesi oluşturun. Forma bir Panel (Panel genişiği 263; 68 olmalı) ve bir de Button objesi ekledikten sonra, panelin arka planını beyaz yaparak adını da barcodeIM olarak değiştirin. Sonra buttona tıklayarak gelen kod satırına şunları yazın:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Graphics g = barcodeIM.CreateGraphics();
Font LableFont=new Font("Arial",10);

Font CodeFont = new Font("Free 3 of 9", 40);

string code = "*12345678*";

float LabelWidth = g.MeasureString(code,LableFont).Width;

float CodeWidth = g.MeasureString(code, CodeFont).Width;

g.DrawString(code, CodeFont, Brushes.Black, 0, 5);

g.DrawString(
                  code,
                  TitleFont,
                  Brushes.Black,
                  new PointF((CodeWidth-LabelWidth)/2,45));

ve işte barkodumuz karşımızda. Çok kolaymış değil mi ?
Evet barkodlar karmaşık şeyler ve çoğu zamanda can sıkıcı olabiliyorlar. Burada basitçe bir barkod oluşturmayı anlatmaya çalıştım. Bu konu böyle kısa geçilemeyecek kadar uzun ve karmaşık bir konu. Ama bu karmaşayı fazla arttırmamak için burada kısaca anlatma gereği duydum.ilerleyen zamanlarda bu konuya ilişkin yazılara devam etmeyi düşünüyorum. Görüşmek dileği ile?.

27 Jul

PHP-GTK

Bildiğiniz gibi, PHP ile web üzerinde çokca güzel işler çıkarılabilmekte. PHP geliştiricileri
PHP nin bu maharetlerini masaüstünde de sergilemek için, PHP-GTK denilen, PHP nin, masaüstünde , kendi kendine çalışabilen (bir web sunucusuna ihtiyaç duymadan) uygulamalar geliştirmemize olanak veren versiyonunu geliştirme ihtiyacı duymuşlar.
işin kavramsal yönünü çok fazla açmaya gerek varmı bilmiyorum ama kısaca değinip geçeceğim burada. Evet PHP ne biliyoruz, peki GTK?
GTK+ ise kısaca, palatformdan bağımsız Grafiksel Kullanıcı Arayüzleri oluşturmamıza
olanak sağlayan araç kitleridir. GNU projesinin bir parçası olan, LGPL lisansı ile dağıtılan bu araçlarla, küçük çaplı projelerden büyük çaplı projelere kadar geniş yelpazede uygulama geliştirilmesine olanak verir.
PHP geliştiricileride GTK+ ın bu palatformdan bağımsız ve açık kaynak kodlu yapısından dolayı Grafiksel Kullanıcı Arayüzü oluşturmaya olanak veren PHP kütüphanelerini GTK+ üzerine inşa etmişler.
Şimdi kafalar çok karışmadan aklınıza gelebilecek bir soruya cevap vereyim. ?Ne yapıcam ki ya ben bununla??
Mis gibi Java var ya da baba gibi C++ olmadı C# ne gereği varki şimdi kasmanın dimi ya.
PHP-GTK nin fazla kişi tarafından duyulmadığı için birçok kişiye angarya geleceğini tahmin edebiliyorum. Ama Php bilen biri olarak, masaüstü bir uygulama yazmak için yeni bir dil öğrenmeye gerek kalmadan, Php ile geliştirme fikri ilk duyduğumdan beri bana çok güzel gelmekte ve ayrıca Php nin esnekliği ve kod yazımındaki rahatlığınıda göz önüne alırsak, Php-Gtk nin kullanıldıkça hak ettiği yeri alacağını düşünüyorum. Bunun haricinde platformdan bağımsız oluşu( geliştirin ister windows ta ister *nix te çalıştırın ve hiçbir ekstra işleme gerek kalmadan). İşte Java, işte .NET bunu yapıyor ve tüm amaçları bu, bir kere yaz ve her yerde kullan.
POT ta önceleri PHP-GTK ile ilgili makaleler hazırlarken , PHP-GTK nin 2. versiyonun çıkacağı söylentileri gezinmeye başlandı.
Var olan mevcut sürümün bir masaüstü uygulama geliştirmeye yetmediği farkedilmiş olmalı ki ikinci versiyonu çıkarma kararı aldılar.
2. versiyonu kendini radikal değişikliklerle gösterdiğinde neye uğradığımı şaşırmıştım, neredeyse herşeye baştan başlamak gerekiyordu çünkü. PHP4 ten vazgeçildi PHP5 e geçildi, bazı widgetler (parçaçık) çıkarıldı, yeni birçok özellik eklendi, sitede bulunan tüm dökümantasyon eski sürüme ait olduğu için yeni sürüme ait dökümantasyon yoktu. Araya başka sebepler de girince iyice uzaklaştığım bu PHP-GTK serüvenine burada yeniden başlıyorum.
Elimden geldiğince ve zaman buldukça PHP-GTK üzerine örnek uygulamalarla yazılar hazırlayacağım burda. PHP-GTK meraklılarının artması dileği ile, hoşçakalın?

27 Jul

Birkaç basit adımda mail göndermek

Hiç mail gönderme ihtiyacı duydunuzmu uygulamanızın içerisinde, veya kodladığınız uygulamanın, mail gönderme işlevinin, olmazsa olmaz bir görev olduğu bir durum oldu mu hiç? Sizi bilmiyorum ama benim olmadı şimdilik Bir arkadaşım SMTP ile nasıl mail gönderebileceğimizi sordu. Php den hatırladığım kadarıyla kolay bir yöntemi olması gerekirdi. Çünkü bu bir standart ve hangi dil olursa olsun bu adımları izlemek zorundaydı.
Bir sunucu, alıcı-gönderen,konu,msj vs.
Çok karmaşık örnekler vardı, hatta örneklerden birinde Socket kullanarak bir kütüphane geliştirilmişti ve bunu kullanarak mail göndermeyi anlatan bir örneğe bile rastladım. Ama istediğim gibi kolay bir yöntem değildi.
Ama tabiki sonunda istediğim kolay yöntemi MSDN içerisinde buldum.
Bunun için iki kütüphaneyi kullanacağız System.Net ve System.Net.Mail


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System.Net;
using System.Net.Mail;

/**
*
* Bir SmtpClient nesnesi oluşturuyoruz
* parametre olarak string tipinde mail hostumuzu veriyoruz
*
**/


SmtpClient sunucu=new SmtpClient("mail.sunucu.net");

/**
*
* Mail sunucumuza bağlanabilmek için
* gerekli kullanıcı adı ve şifremizle bağlantı oluşturacak
* bağlantımızı atıyoruz
*
**/


sunucu.Credentials = new NetworkCredential("kullaniciAdi", "sifre");

/**
*
* SmtpClient nesnemizin send metodu ile mailimizi gönderiyoruz
* tabi ilk önce gerekli parametreleri vermemiz gerekiyor
* send metodunun aldığı bütün parametreler string tipindedir.
*
**/


sunucu.Send(kimden, kime, konu, mesaj);

ve mailimiz gönderilmiştir (tabi eğer gerekli parametreleri düzgün bir şekilde verdiysek).
Ve bu görevde tamamlanmıştır. Hoşçakalın?

ÖRNEK UYGULAMA (KONSOL)

27 Jul

Linuxta PHP-GTK2 kurulumu

PHP-GTK 2 yi Linuxta kurmanın en iyi yolu onu derlemektir. Henüz herhangi bir dağıtım
için ikili veya kaynak paketleri mevcut değil, bu yüzden paket yöneticinizle PHP-GTK 2 yi kuramazsınız!
Buradaki kurulum açıklamaları birçok Linux dağıtımı için geçerlidir. Yalnız FreeBSD de çalışmamaktadır.
PHP-GTK 2 yi Linux sisteminize kurmak için iki seçenek var. Ya mevcut PHP kurulumunuzun kullanabilir ya da ayrı bir kurulum yapmayı seçerek bunu PHP-GTK olarak kullanabilirsiniz. Her iki seçenekte de GTK+ 2.6 ve üstü sisteminizde kurulu olmalı.
PHP-GTK 2 yi yeni bir kurulum olarak kurmak
Sadece aşağıdaki adımları takip ederek kurulumu başarıyla tamamlayabilirsiniz. Ã?ncelikle PHP nin en yeni sürümünü kontrol etmelisiniz. 5_1 veya 5_2 sürümlerinden herhangi birini seçebilirsiniz, her ikiside çalışmaktadır:
$ cvs -d :pserver:cvsread@cvs.php.net:/repository login
$ cvs -d :pserver:cvsread@cvs.php.net:/repository co -r PHP_5_2 php-src

Şimdi bunu derlemeniz ve kurmanız gerekiyor

$ cd php-src
$ ./buildconf
$ ./configure ?prefix=/opt/php5_2 ?disable-cgi
$ make
$ su
$ make install
$ echo extension=php_gtk2.so >> /opt/php5_2/lib/php.ini
$ /opt/php5_2/bin/php-config ?extension-dir | xargs echo ?extension_dir=? /opt/php5_2/lib/php.ini

Eğer CVS den derlemeyi başaramazsanız, php nin download sayfasından kaynak kodları indrerek derleyebilirsiniz:
Şimdi işlemlerimizi bitirerek kurulumumuzu tamamlayalım:

$ cd ..
$ cvs -d :pserver:cvsread@cvs.php.net:/repository co php-gtk
$ cd php-gtk
$ ./buildconf ?with-phpize=/opt/php5_2/bin/phpize
$ ./configure ?with-php-config=/opt/php5_2/bin/php-config
$ make
$ make install

Hepsi bu, kurulumu bitirdiniz!
Mevcut Kurulumun üzerine kurmak
Php nin mevcut kurulumunun üzerine kurmaya karar verirseniz, CLI destekli en azından 5.1 versiyonunun bulunmasına dikkat edin. PHP nin bundan önceki hiçbir sürümüyle çalışmayacaktır. PHP sürümünüzü komut satırından php -v yazarak kontrol edebilirsiniz. Versiyonu kontrol ederken, çıktı da cli kelimesinin var olmasına dikkat edin.
Şimdi PHP-GTK 2 en son sürümünü CVS kaynağından kontrol edebilir veya download sayfasındaki açıklamalarda yer alan bütün kaynak kodları indirip bir klasöre açtıktan sonra cd komutuyla bu klasöre girerek aşağıdaki kodları çalıştırın:

$ ./buildconf
$ ./configure
$ make
$ make install

Bu birçok kişide çalışır. Fakat eğer PHP nin birkaç farklı sürümü kuruluysa veya PHP karmaşık bir klasör yapısına kurulmuşsa sorunlarla karşılaşabilirsiniz. Fakat bu gibi durumlardan phpize ve php-config dosyalarının yollarının tam yollarını belirterek kurtulabilirsiniz :

$ ./buildconf –with-phpize=/path/to/phpize
$ ./configure –with-php-config=/path/to/php-config

Kurulumu test etmek:
PHP-GTK2 yi kullanmadan önce, php.ini dosyanıza
extension=php_gtk2.so
satırını ekleyerek PHP-GTK yi etkinleştirdikten sonra kullanabilirsiniz.
Kaynak kodlarını indirdiğiniz klasör içerisindeki demo klasöründeki örnekleri test ederek kurulumunuzun sağlıklı olup olmadığını kontrol edebilirsiniz.
Bunun için demos klasörünüzde komut satırından
$ php phpgtk2-demo.php

şeklinde çalıştırarak test edebilirsiniz.
Kaynak: gtk.php.net