Monday, January 11, 2016

ASP.NET Uygulamalarından Elektronik Posta Göndermek - Sending E-Mail from ASP.NET Applications

Müşteri ihtiyaçlarına göre bazı durumlarda uygulamadan e-posta gönderilmesi gerekebilmektedir.Bu durumda .NET üzerinde tanımlı "System.Net.Mail" ad alanı içindeki "SmtpClient" sınıfı kullanılarak e-posta gönderilebilmektedir. Örnek olarak aşağıdaki kod bloğu verilebilir:

MailMessage mail = new MailMessage(pfrom, pto);
mail.IsBodyHtml = IsHtmlBody;

mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential(UserName, Password);
client.Port = Port;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Host = Host;
mail.Subject = psubject;
mail.Body = pmessage;
client.Send(mail);

Eğer e-posta bir HTML mesajı içeriyorsa MailMessage nesnesinin IsBodyHtml özelliği "true" yapılmalıdır.

Bunun dışında bazen eski e-posta sunucuları kullanılarak e-posta gönderilirken yukarıda kullanılan "System.Net.Mail" ad alanını içindeki sınıf sıkıntı çıkarabilmektedir. Bu durumda "System.Web.Mail" içinde yer alan SmtpMail sınıfı kullanılarak e-posta gönderim işlemi yapılabilmektedir. Aşağıda bu durum için örnek kod bloğu verilmiştir:

MailMessage mail = new MailMessage();
mail.To = pto;
mail.From = pfrom;
mail.Subject = psubject;
mail.Body = pmessage;

mail.Subject = psubject;
mail.Body = pmessage;

SetMailConfiguration(mail);

SmtpMail.Send(mail); 

Bu yöntem kullanıldığında doğrulama (Authentication) bilgisi aşağıdaki şekilde eklenmelidir:

mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", UserName); //set your username here
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", Password); //set your password here

Eğer mesaj HTML içeriyorsa ayarlamalara aşağıdaki kod eklenmelidir:

mail.BodyFormat = MailFormat.Html;


No comments:

Post a Comment