Giriş
C# ile e-posta gönderme için iki seçenek bulunuyor. İlk seçenekte bilgisayarda kurulu Outlook'a Interop aracılığyla bağlanıp e-posta göndermesini söylüyoruz. Bu durumda gönderilen e-posta "Sent" dizininde de görülebiliyor.
İlk Seçenek Outlook Interop
Projeye Add Reference menüsünden Outlook assembly'si eklenir. Assemblies > Extensions > Microsoft.Office.Interop.Outlook eklenir. Basit bir metin gönderme örneği:
İkinci Seçenek System.Net.Mail Sınıfları
Tam çalışan örnek:
Sınıflara bakmadan önce tam çalışan bir örnek eklemek istedim.
Attachment sınıfı
E-postadaki eklentiyi temsil eder. Inline attachent şöyle gönderilir.
MailAddress sınıfı
Bu sınıf Java'daki Internet address sınıfına benziyor. Örnek:
Mesajın içeriğini saklayan sınıf
MailMessage sınıfı Disposable olduğu için using ile kullanmak gerekir.
Kimden geldiğini gösterir. MailAddress nesnesi atanır.
Priority Alanı
Yüksek öncelik verilebilir.Örnek:
MailAddressCollection türünden olan bu alana liste ekleme metodu bulunmuyor. Şöyle yapılabilir.
SmtpClient Sınıfı
Bu sınıf Java'daki Transport'a benziyor.
Constructor metodu
Sınıfın bir kaç tane constructor metodu var.
En kolay hedef e-posta sunucusu ve port numarasını beraber veren metod. Bu arada SMTP port numarası olarak artık 25 yerine çoğunlukla 587 kullanılıyor.
MailMessage nesnesini gönderir. Örnek:
SmptpClient sınıfı Disposable olduğu için using ile kullanmak gerekir
C# ile e-posta gönderme için iki seçenek bulunuyor. İlk seçenekte bilgisayarda kurulu Outlook'a Interop aracılığyla bağlanıp e-posta göndermesini söylüyoruz. Bu durumda gönderilen e-posta "Sent" dizininde de görülebiliyor.
İlk Seçenek Outlook Interop
Projeye Add Reference menüsünden Outlook assembly'si eklenir. Assemblies > Extensions > Microsoft.Office.Interop.Outlook eklenir. Basit bir metin gönderme örneği:
// Create the Outlook application. Outlook.Application oApp = new Outlook.Application(); // Create a new mail item. Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem); // Set HTMLBody. //add the body of the email oMsg.HTMLBody = "Hello, Jawed your message body will go here!!"; //Subject line oMsg.Subject = "Your Subject will go here."; // Add a recipient. Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients; // Change the recipient in the next line if necessary. Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add("jawed.ace@gmail.com"); oRecip.Resolve(); // Send. oMsg.Send();
İkinci Seçenek System.Net.Mail Sınıfları
Tam çalışan örnek:
Sınıflara bakmadan önce tam çalışan bir örnek eklemek istedim.
MailMessage mail = new MailMessage();
mail.From = new MailAddress("abc@mydomain.com", "Enquiry");
mail.To.Add("munjal.pandya@yahoo.com");
mail.IsBodyHtml = true;
mail.Subject = "Registration";
mail.Body = "Some Text";
mail.Priority = MailPriority.High;
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
//smtp.UseDefaultCredentials = true;
smtp.Credentials = new System.Net.NetworkCredential("xyz@gmail.com", "<mypwd>");
smtp.EnableSsl = true;
//smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Send(mail);
Attachment sınıfı
E-postadaki eklentiyi temsil eder. Inline attachent şöyle gönderilir.
string attachmentPath = Environment.CurrentDirectory + @"\test.png";
Attachment inline = new Attachment(attachmentPath);
inline.ContentDisposition.Inline = true;
inline.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
inline.ContentId = contentID;
inline.ContentType.MediaType = "image/png";
inline.ContentType.Name = Path.GetFileName(attachmentPath);
message.Attachments.Add(inline);
MailAddress sınıfı
Bu sınıf Java'daki Internet address sınıfına benziyor. Örnek:
new MailAddress("abc@mydomain.com", "Enquiry");
MailMessage sınıfıMesajın içeriğini saklayan sınıf
MailMessage sınıfı Disposable olduğu için using ile kullanmak gerekir.
// .NET 4.0 only for SmtpClient disposing
using (var smtpClient = new SmtpClient(_host, _portNumber))
{
using (var mailMsg = new MailMessage())
{
...
smtpClient.Send(mailMsg);
}
}
From AlanıKimden geldiğini gösterir. MailAddress nesnesi atanır.
Priority Alanı
Yüksek öncelik verilebilir.Örnek:
MailMessage mailMsg = new MailMessage();
mailMsg.Priority = MailPriority.High; //I want to know now!
To AlanıMailAddressCollection türünden olan bu alana liste ekleme metodu bulunmuyor. Şöyle yapılabilir.
List<string> recipientAddresses = ...
var mailMsg = new MailMessage();
recipientAddresses.ForEach(p => mailMsg.To.Add(p));
SmtpClient Sınıfı
Bu sınıf Java'daki Transport'a benziyor.
Constructor metodu
Sınıfın bir kaç tane constructor metodu var.
En kolay hedef e-posta sunucusu ve port numarasını beraber veren metod. Bu arada SMTP port numarası olarak artık 25 yerine çoğunlukla 587 kullanılıyor.
SmtpClient smtpClient = new SmtpClient("mailexchanger_String", 587);
Send metoduMailMessage nesnesini gönderir. Örnek:
MailMessage mail = ...
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.Send(mail);
SmptpClient sınıfı Disposable olduğu için using ile kullanmak gerekir
using (SmtpClient smtpClient = new SmtpClient(...))
{
...
}
Hiç yorum yok:
Yorum Gönder