Send | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar send

C# ile Hotmail üzerinden e-posta gönderme

02 October 2011 3 yorum

Daha önce C# ile GMail üzerinden e-posta gönderme yazısında yazdığımız e-posta gönderme uygulamasını bu sefer Hotmail üzerinden e-posta gönderecek şekilde yazacağız.

Windows uygulamalarınız üzerinden e-posta gönderebilmek güzel bir özellik.

Uygulama içerisinden e-posta gönderme konusunda ilk akla gelen sorulardan bir tanesi, “Hotmail üzerinden e-posta gönderebilir miyim?” oluyor.

Bu yazımda, Hotmail üzerinden e-posta gönderebileceğimiz bir uygulama geliştireceğim.

Öncelikle kodumuzun using kısmına System.Net ve System.Net.Mail namespace’ini eklememiz gerekiyor.

.Net Framework, System.Net.Mail namespace‘i içerisinde çeşitli class‘lar aracılığı ile uygulamanız içerisinden kolaylıkla e-posta gönderilmesini mümkün kılıyor.

using System.Net.Mail;
using System.Net;

İlk yapmamız gereken, SmtpClient sınıfından bir örnek oluşturmak ve bazı özelliklerini ayarlamak.

SmtpClient sc = new SmtpClient();
sc.Port = 587;
sc.Host = "smtp.live.com";
sc.EnableSsl = true;

Port özelliği ile, Smtp sunucusuna erişeceğimiz port numarasını belirliyoruz

Host özelliği ile, Hotmail Smtp sunucusunun adresini belirliyoruz

EnableSsl özelliği ile, Hotmail Smtp sunucusuna bağlanacağımız protokolu belirliyoruz. Eğer true değer atarsak https, eğer false değer atarsak http protokolü kullanılır.

Hotmail e-posta adresimizi ve şifremizi, Credentials özelliğine NetworkCredential sınıfından bir örnek ile atamamız gerekiyor.

sc.Credentials = new NetworkCredential("eposta@hotmail.com", "hotmail_sifre");

SmtpClient örneği üzerinden gönderilecek posta, MailMessage tipinde olmalıdır. Bir sonraki adımda MailMessage sınıfından bir örnek oluşturuyoruz.

MailMessage mail = new MailMessage();

mail.From = new MailAddress("eposta@hotmail.com", "Ekranda Görünecek İsim");

mail.To.Add("alici1@mail.com");
mail.To.Add("alici2@mail.com");

mail.CC.Add("alici3@mail.com");
mail.CC.Add("alici4@mail.com");

mail.Subject = "E-Posta Konusu";
mail.IsBodyHtml = true;
mail.Body = "E-Posta İçeriği";

mail.Attachments.Add(new Attachment(@"C:\Rapor.xlsx"));
mail.Attachments.Add(new Attachment(@"C:\Sonuc.pptx"));

Son olarak, SmtpClient sınıfının Send() method’unu kullanarak, oluşturduğumuz MailMessage örneğini gönderiyoruz.

sc.Send(mail);

Kodların toparlanmış hali;

using System;
using System.Net.Mail;
using System.Net;

class Program
{
	static void Main(string[] args)
	{
		SmtpClient sc = new SmtpClient();
		sc.Port = 587;
		sc.Host = "smtp.live.com";
		sc.EnableSsl = true;
		sc.Timeout = 50000;

		sc.Credentials = new NetworkCredential("eposta@hotmail.com", "hotmail_sifre");

		MailMessage mail = new MailMessage();

		mail.From = new MailAddress("eposta@hotmail.com", "Ekranda Görünecek İsim");

		mail.To.Add("alici1@mail.com");
		mail.To.Add("alici2@mail.com");

		mail.CC.Add("alici3@mail.com");
		mail.CC.Add("alici4@mail.com");

		mail.Subject = "E-Posta Konusu";
		mail.IsBodyHtml = true;
		mail.Body = "E-Posta İçeriği";

		mail.Attachments.Add(new Attachment(@"C:\Rapor.xlsx"));
		mail.Attachments.Add(new Attachment(@"C:\Sonuc.pptx"));

		sc.Send(mail);
	}
}

C# method overload nedir?

27 April 2011 1 yorum

Method Overload, aynı isme sahip birden fazla method’un olabilmesidir diyebiliriz.

Kural olarak, overload edilmiş method‘lar aynı imza‘ya (signature) sahip olamazlar.

Method İmzası (Method Signature), method’un ismi ve aldığı parametrelerin tipleri/adedidir. Method imzasına, method’un dönüş tipi dahil değildir.

Örnek olarak;

void Topla(int Sayi1, int Sayi2) /// Topla(int, int)
{
}

void Topla(string Isim1, string Isim2) /// Topla(string, string)
{
}

/// Aşağıdaki method, ilk Topla method'u ile aynı imzaya sahip
void Topla(int Rakam1, int Rakam2) /// Topla(int, int)
{
}

Farklı bir örnek;

void EMailGonder(string To, string CC, string Konu, string Mesaj)
{
}

EMailGonder() method‘unu kullanarak, email gönderme işlevini yerine getirebiliriz.

Tek bir alıcı yerine, To kısmının string dizisi (string[]) olması gerektiği durumda, yeni bir method yazmamız, hangi method’u kullanmamız gerektiği konusunda kafa karışıklığına sebep olacaktır.

Method Overload sayesinde, bu kafa karışıklığı ve kod kalabalığından kurtulabiliriz;

void EMailGonder(string[] To, string CC, string Konu, string Mesaj)
{
}

İki method’umuz birlikte;

void EMailGonder(string To, string CC, string Konu, string Mesaj)
{
}

void EMailGonder(string[] To, string CC, string Konu, string Mesaj)
{
}

Artık, EMailGonder() method’unu kullanacağımız zaman, ilk parametreyi string dizisi (string[]) şeklinde verirsek,

void EMailGonder(string[], string, string, string)

imzasına sahip method, ilk parametreyi string olarak verirsek,

void EMailGonder(string, string, string, string)

imzasına sahip olan method çalıştırılacaktır.

C# ile GMail üzerinden e-posta gönderme

07 July 2010 19 yorum

Windows uygulamalarınız üzerinden e-posta gönderebilmek güzel bir özellik.

Uygulama içerisinden e-posta gönderme konusunda ilk akla gelen sorulardan bir tanesi, “GMail üzerinden e-posta gönderebilir miyim?” oluyor.

Bu yazımda, GMail üzerinden e-posta gönderebileceğimiz bir uygulama geliştireceğim.

Öncelikle kodumuzun using kısmına System.Net ve System.Net.Mail namespace’ini eklememiz gerekiyor.

.Net Framework, System.Net.Mail namespace‘i içerisinde çeşitli class‘lar aracılığı ile uygulamanız içerisinden kolaylıkla e-posta gönderilmesini mümkün kılıyor.

using System.Net.Mail;
using System.Net;

İlk yapmamız gereken, SmtpClient sınıfından bir örnek oluşturmak ve bazı özelliklerini ayarlamak.

SmtpClient sc = new SmtpClient();
sc.Port = 587;
sc.Host = "smtp.gmail.com";
sc.EnableSsl = true;

Port özelliği ile, Smtp sunucusuna erişeceğimiz port numarasını belirliyoruz

Host özelliği ile, GMail Smtp sunucusunun adresini belirliyoruz

EnableSsl özelliği ile, GMail Smtp sunucusuna bağlanacağımız protokolu belirliyoruz. Eğer true değer atarsak https, eğer false değer atarsak http protokolü kullanılır.

GMail e-posta adresimizi ve şifremizi, Credentials özelliğine NetworkCredential sınıfından bir örnek ile atamamız gerekiyor.

sc.Credentials = new NetworkCredential("eposta@gmail.com", "gmail_sifre");

SmtpClient örneği üzerinden gönderilecek posta, MailMessage tipinde olmalıdır. Bir sonraki adımda MailMessage sınıfından bir örnek oluşturuyoruz.

MailMessage mail = new MailMessage();

mail.From = new MailAddress("eposta@gmail.com", "Ekranda Görünecek İsim");

mail.To.Add("alici1@mail.com");
mail.To.Add("alici2@mail.com");

mail.CC.Add("alici3@mail.com");
mail.CC.Add("alici4@mail.com");

mail.Subject = "E-Posta Konusu";
mail.IsBodyHtml = true;
mail.Body = "E-Posta İçeriği";

mail.Attachments.Add(new Attachment(@"C:\Rapor.xlsx"));
mail.Attachments.Add(new Attachment(@"C:\Sonuc.pptx"));

Son olarak, SmtpClient sınıfının Send() method’unu kullanarak, oluşturduğumuz MailMessage örneğini gönderiyoruz.

sc.Send(mail);

Kodların toparlanmış hali;

using System;
using System.Net.Mail;
using System.Net;

class Program
{
	static void Main(string[] args)
	{
		SmtpClient sc = new SmtpClient();
		sc.Port = 587;
		sc.Host = "smtp.gmail.com";
		sc.EnableSsl = true;

		sc.Credentials = new NetworkCredential("eposta@gmail.com", "gmail_sifre");

		MailMessage mail = new MailMessage();

		mail.From = new MailAddress("eposta@gmail.com", "Ekranda Görünecek İsim");

		mail.To.Add("alici1@mail.com");
		mail.To.Add("alici2@mail.com");

		mail.CC.Add("alici3@mail.com");
		mail.CC.Add("alici4@mail.com");

		mail.Subject = "E-Posta Konusu"; mail.IsBodyHtml = true; mail.Body = "E-Posta İçeriği";

		mail.Attachments.Add(new Attachment(@"C:\Rapor.xlsx"));
		mail.Attachments.Add(new Attachment(@"C:\Sonuc.pptx"));

		sc.Send(mail);
	}
}

C# ile Ping Uygulaması

12 January 2010 7 yorum

Windows komut satırından çağırabileceğiniz ping komutu ile kendi bilgisayarınızdan, networkünüzde bulunan diğer bilgisayarlara Ping atabilirsiniz.

Bazı durumlarda uygulamamıza ping yeteneği eklememiz gerekebilir. (Sunuculara erişilemediği anı yakalayıp, ilgili birimleri uyarmak gibi) Bu yazımda C# ile ping uygulaması yazacağız.

Hemen ekran görüntüsü ile başlayalım;

İlk başlangıç noktamız, MSDN’de şu sayfadan bilgilerine erişebileceğiniz Ping class’ı olacak. Ping class’ı, framework içerisinde System.Net.NetworkInformation namespace’i içerisinde yeralır.

private void btnPing_Click(object sender, EventArgs e)
{
	Ping p = new Ping();
	Timer t = new Timer() { Interval=1000 };
	t.Start();
	t.Tick += delegate(object _s, EventArgs _e) {
		PingReply pr = p.Send(txtAdres.Text);
		txtSonuc.Text += string.Format("Sonuç: {0}, {1} -> {2} ms.{3}", pr.Status.ToString(), pr.Address.ToString(), pr.RoundtripTime.ToString(), Environment.NewLine);
	};
}

Ping butonunun Click olayında, Ping ve Timer class’larından birer örnek oluşturuyoruz. Timer nesnesinin Tick olayında, Ping nesnesinin Send() method’unu çağırıyoruz, dönen sonucu PingReply sınıfında bir değişkene atıyoruz ve txtSonuc Textbox‘ında gösteriyoruz.

Uygulamanın kaynak kodlarını buradan indirebilirsiniz.