ADNAN ŞAHİN

A quest for software excellence...

ASP.NET ile E-mail Gönderme

Merhaba Arkadaşlar, bu yazımızda Asp.Net’te E-mail gönderme işlemini anlatacağım.  Mail gönderme protokolü olarak SMTP (Simple Mail Tranfer Protocol) protkolünü kullanacağız. E-mail göndermek için sunucu ve istemci arasındaki iletşimi kuran protokoldür. O halde bu işlemleri bir örnek üzerinde açıklayalım.

Öncellikle bir Asp.Net Web projesi oluşturuyoruz.


 

Projemizi oluşturduktan sonra projemize sağ tıklayıp Add > New Item > Web Form  sayfası ekliyoruz. Sayfamızı ekledikten sonra sayfamızın  Design kısmına gelip aşağıdaki form tasarımını yapıyoruz.


Yukarıdaki tasarımın source kodları:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

    <style type="text/css">

        .inputRow {

                       width: 100%;

            font-family: Arial, Helvetica, sans-serif;

            font-size: 11px;

            font-weight: bold;

            background-color: black;

            font-weight: bold;

            float: left;

            border-bottom: 1px dotted white;

        }


        .inputColumnLabel {

            width: 14%;

            line-height: 25px;

            text-align: left;

            color: #6dde88;

            padding-left: 3%;

            float: left;

        }

 

        .textColumn {

            line-height: 25px;

            text-align: left;

            float: left;

            width: 83%;

            color: white;

        }

    </style>

</head>

<body>

    <form id="form1" runat="server">

        <div>

            <div class="inputRow">

                <div class="inputColumnLabel">

                    <asp:Label ID="lblTo" runat="server" Text="To:"></asp:Label>

                </div>

                <div class="textColumn">

                    <asp:TextBox ID="txtTo" runat="server" Width="300px"></asp:TextBox>

                </div>

            </div>

            <div class="inputRow">

                <div class="inputColumnLabel">

                    <asp:Label ID="lblSubject" runat="server" Text="Subject:"></asp:Label>

                </div>

                <div class="textColumn">

                    <asp:TextBox ID="txtSubject" runat="server" Width="300px"></asp:TextBox>

                </div>

            </div>

            <div class="inputRow">

                <div class="inputColumnLabel">

                    <asp:Label ID="lblContent" runat="server" Text="Content:"></asp:Label>

                </div>

                <div class="textColumn">

                    <asp:TextBox ID="txtContent" runat="server" Height="100px" Width="300px"></asp:TextBox>

                </div>

            </div>

            <div class="inputRow">

                <div style="float: right; padding: 10px">

                    <asp:Button ID="btnSend" runat="server" Width="120px" OnClick="btnSend_Click" Height="30px"  Text="Send" />

                </div>

            </div>

        </div>

    </form>

</body>

</html>

 

Formumuzu tasarladıktan sonra butonumuza çift tıklayıp, click olayına aşağıdaki kodları yazıyoruz.

 

        protected void btnSend_Click(object sender, EventArgs e)

        {

 

            //Oluşturacağımız mail şablonunu temsil eder.

            MailMessage mail = new MailMessage();

            //Mailin kimin gönderdiği ve görüntülenecek isim

            mail.From = new MailAddress(ConfigurationManager.AppSettings["From"], ConfigurationManager.AppSettings["SiteName"]);

            mail.To.Add(txtTo.Text);//Mail gönderilecek adres

            mail.Subject = txtSubject.Text;//Mailin konusu;

            mail.Body =txtContent.Text;//Mailin içeriği.

            mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;

            //Smtp protokulü üzerinde mail göndermek için kullanılır.

            SmtpClient client = new SmtpClient(ConfigurationManager.AppSettings["MailServer"], Convert.ToInt32(ConfigurationManager.AppSettings["MailServerPort"]));

 

            //Göndereceğimiz mailin hangi kullanıcı adı ve şifreyle göndereceğimizi belirliyoruz.

            client.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["MailUserName"], ConfigurationManager.AppSettings["MailPassword"]);

            mail.IsBodyHtml = true;

            client.EnableSsl = true;

            client.Send(mail);

        }

 

Yukarıdaki kod bloğunda bazı değerleri web.configten alıyoruz.

<configuration>

  <appSettings>

    <add key="MailServer" value="smtp.gmail.com"/>

    <add key="From" value="abcd@gmail.com"/>

    <add key="MailUserName" value="abcd@gmail.com"/>

    <add key="MailPassword" value="4321"/>

    <add key="MailServerPort" value="587"/>

    <add key="SiteName" value="ADNAN SAHIN"/>

  </appSettings>

</configuration>

 

 

Evet Arkadaşlar.. Bir paylaşımın daha sonuna geldik .Faydalı olması dileğiyle…

Bir sonraki makalemde görüşmek üzere…Esenle kalın.

 

Asp.Net Uygulamalarında Server Side taraflı JQuery veya Javascript Kodu Çalıştırmak

Merhaba Arkadaşlar, özellikle Asp.Net uygulaması geliştirirken bazen serve side tarafta Javascript ve Jquery kodları çalıştırma ihtiyacı duyarız. Aşağıdaki runJavaScriptCode metodu ile eğer Jquery kod çalıştırmak isti yorsak isjQueryCode true Javascript kodu için false demeniz yeterli olacaktır.

  public void runJavaScriptCode(string jsCodetoRun, bool isjQueryCode)
    {

        ScriptManager requestSM = ScriptManager.GetCurrent(this);
        if (requestSM != null && requestSM.IsInAsyncPostBack)
        {
            ScriptManager.RegisterClientScriptBlock(this,
                                typeof(System.Web.UI.Page),
                                Guid.NewGuid().ToString(),
                                isjQueryCode ? formatjQueryCode(jsCodetoRun) : jsCodetoRun,
                                true);
        }
        else
        {
            ClientScript.RegisterClientScriptBlock(typeof(System.Web.UI.Page),
                                Guid.NewGuid().ToString(),
                                isjQueryCode ? formatjQueryCode(jsCodetoRun) : jsCodetoRun,
                                true);
        }
    }

 private string formatjQueryCode(string jsCodetoRun)
    {
        StringBuilder sb = new StringBuilder();
        sb.AppendLine("$(document).ready(function () {");
        sb.AppendLine(jsCodetoRun);
        sb.AppendLine(" });");

        return sb.ToString();
    }

Localhost’tan Web Site Yayınlama (IIS)

Internet Information Services, web uygulamalarının yayınlanması için web uygulamalarını barındırıp bunları dışarıya sunacak olan sunucu servislerinden biridir. ASP.NET uygulamaları da yayınlanmak için IIS içerisinde barındırılıyor olmalıdır. IIS dışarıdan gelen çağrıları yanıtlayabilmek için varsayılan olarak 80 nolu portu dinler ve gelen talepleri uygun altyapıya devredip işleterek dışarıya HTML çıktısını gönderir. Biz de geliştirmiş olduğumuz ASP.NET uygulamalarını yayımlamak için IIS üzerinde gerekli konfigürasyonları yaptıktan sonra, uygulamamızı IIS üzerinde barındırıyoruz. Bir ASP.NET uygulamasını IIS üzerinden yayınlamak istiyorsak, IIS üzerinde sanal dizin adını verdiğimiz yapıları kullanmak zorundayız.

Yeni bir web sitesi yayınlamak için ilk olarak Denetim Masası’ndan Yönetimsel Araçlar bölümüne geçilip Internet Information Services (IIS) kısayoluna tıklanarak IIS’in yönetim penceresi açılmalıdır.



Yönetimsel Araçlar bölümünden IIS’e çift tıklandığında IIS’in yönetim penceresi açılıyor olacaktır. Bu pencere aracılığı ile IIS üzerinde bulunan siteler görülüp, özellikleri ayarlanabilir ya da yeni bir site eklenebilir. Yeni bir site eklemek için Siteler üzerinde mouse’ın sağ tuşu ile tıklanıp açılan menüden Add Web Site(Web Sitesi Ekle) seçeneği seçilmelidir. 


 

Yukarıdaki işlemden sonra sanal site adı ve fiziksel dosyaların saklanacağı yer soruluyor olacaktır. Site adı bölümüne istediğimiz ismi yazdıktan sonra fiziksel yol (Physical Path) bölümünden de fiziksel dosyalarımızın, yani ASP.NET dosyalarımızın, bulunduğu bölümü seçiyoruz. Ana bilgisayar adı olarak bölümüne www.sanalsatis.com değerini yazarak ve Tamam diyerek web sitemizi IIS üzerinde hazır hale getiriyoruz.




IIS ile ilgili işlemlerden sonra sitemiz kendi bilgisayarımız üzerinde yayınlamak için C:\Windows\System32\drivers\etc dizini altındaki hosts dosyasını aşağıdaki ekranda görüldüğü gibi değiştirerek kaydediyoruz.


Görüşmek üzere,

Adnan ŞAHİN

Store Procedure’lerle Çalışmak

Stored Procedure’ler , bir çok gelişmiş programlama dilindeki fonksiyon yapılarına karşılık gelir. Birden fazla işlemi, paketlenmiş bir halde bir tek komut ile çalıştırmamız gerektiğinde stored procedures kullanılır. Stored Procedure’lerin en büyük özelliği sorguların önceden hazırlanması (derlenmesi) ve veritabanı yönetim sistemi ile aynı uzayda çalışmasından dolayı daha hızlı sonuç vermesidir. Bir Stored Procedure oluşturulduktan sonra ,veritabanı sunucusunda saklanır. Her ihtiyaç duyulduğunda aynı sp defalarca çağrılabilir.

 

Stored Procedure’lerin performans açısından ne sağladığını anlamak için kodlandıktan sonra çalışıncaya kadar hangi aşamalardan geçtiğini ve sonraki çalıştırılmasında nasıl bir yol izleyerek sonuc ürettiğini bilmek gerekir. Bir Stored Procedure oluşturulduktan sonraki ilk çalıştırılmasında şu aşamalara tabi tutulur. (Bu aşamalar , bir sorgunun da geçtiği aşamalardır. Bu aşamalar Ayrıştırma(Parsing) ,Derleme(Compiling) ve Çalıştırma(Executing) aşamalarıdır. Ancak Stored Procedure normal şartlarda çalıştırılırken, aynı aşamaları takip etmez. Çünkü derleme işleminden sonra çalıştırma  planı ,Prosedür Hafızası (procedure cash) denilen bir hafızada saklanır. Takip eden çağırma istekleri ,prosedür hafızasındaki çalıştırma planı olarak cevaplanır ve ilk iki aşama atlandığı için normal şartlarda daha hızlı neticeye ulaşılır. Bir script bloğu çalıştırmaya göre stored procedure çalıştırmayı avantajlı kılan nokta burasıdır.