
Bir e-posta gönderirken, resimler, ses ve video gibi multimedya içeriği göndermeniz gerekebilir. MIME (Çok Amaçlı İnternet Posta Uzantıları) mesajlarının devreye girdiği yer burasıdır. Bu makalede, C#’ta programlı olarak EML mesajları nasıl oluşturulacağını keşfedeceğiz. Makalenin sonunda, MIME mesajları nasıl oluşturulacağı, e-postanın HTML içeriğine resim eklenmesi ve e-postanın EML formatında kaydedilmesi konularında bilgi sahibi olacaksınız.
- .NET API ile MIME Mesajları Oluşturma
- Sıfırdan EML Dosyası Oluşturma
- HTML İçeriğine Resim Ekleme
- HTML Dosyasından EML Dosyası Oluşturma
- Outlook’ta HTML Mesajının Görünümünü İyileştirme İpuçları
.NET API ile MIME Mesajları Oluşturma
İlk MIME mesajınızı oluşturmadan önce, ilk adım projenizde Aspose.Email for .NET kütüphanesini yüklemektir. Bu, MIME mesajlarını programlı olarak oluşturma yeteneği de dahil olmak üzere e-posta mesajlarıyla çalışmak için kapsamlı bir araç seti sağlayan C# geliştiricileri için güçlü bir kütüphanedir. Kütüphane, geliştiricilerin MIME mesajlarının çeşitli yönlerini, ek, gövde, başlık, kodlama gibi kolayca manipüle etmelerine yardımcı olur. Kütüphaneyi NuGet aracılığıyla yükleyebilir veya DLL’sini indirebilirsiniz.
PM> Install-Package Aspose.Email
Sıfırdan EML Dosyası Oluşturma
API’niz yüklendikten sonra, artık sıfırdan bir eml oluşturma zamanı. Bunu yapmanın en basit yollarından biri, Aspose.Email’deki MailMessage sınıfını kullanmaktır. MailMessage sınıfı, göndereni, alıcıları, konuyu, gövdeyi, ekleri, başlıkları ve e-postanızın diğer ayrıntılarını ayarlamanıza olanak tanıyan çeşitli özellikler ve yöntemlerle bir e-posta mesajı nesnesi oluşturmanıza olanak sağlar.
Aşağıdaki adımlar ve kod örneği, sıfırdan bir EML oluşturmanıza yardımcı olacaktır:
- Varsayılan yapıcıyı kullanarak yeni bir MailMessage nesnesi oluşturun.
- MailMessage nesnesinin özelliklerini ihtiyaçlarınıza göre ayarlayın.
- MailMessage nesnesini Save yöntemini kullanarak EML dosyası olarak kaydedin.
// Create a new MailMessage object | |
var eml = new MailMessage() | |
{ | |
// Set the sender address | |
From = "sender@sender.com", | |
// Add a recipient address | |
To = "receiver@receiver.com", | |
// Set the subject | |
Subject = "New message", | |
// Set the HTML body | |
HtmlBody = @"<!DOCTYPE html> | |
<html> | |
<head> | |
<style> | |
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;} | |
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal; | |
font-weight:normal;color:#000000;background-color:#ffffff;} | |
</style> | |
</head> | |
<body> | |
<h3>New message</h3> | |
<p>This is a new message created by Aspose.Email.</p> | |
</body> | |
</html>" | |
}; | |
// Save the MailMessage object to an EML file | |
eml.Save("message.eml", SaveOptions.DefaultEml); |
MailMessage sınıfının Save yöntemi iki parametre alır: dosya yolu ve kaydetme seçenekleri. Kaydetme seçenekleri, çıktı dosyasının formatını belirtir.
HTML İçeriğine Resim Ekleme
Bu işlemi gerçekleştirmek için, resmi HTML gövdesine gömmeniz gerekir. Bunu yapmak için “img” etiketini kullanabilirsiniz.
Aşağıdaki kod örneği, bir mesaja HTML gövdesine nasıl resim ekleneceğini gösterir.
- HTML gövdesi,
cid:image1
olarak ayarlanmış bir kaynak özniteliğine sahip bir resim etiketi içerir. - AlternateView sınıfı, gömülü resmi içeren mesaj gövdesinin alternatif bir görünümünü almak için kullanılır.
- LinkedResource sınıfı, gömülü resmi temsil etmek için kullanılır ve içerik kimliği
image1
olarak ayarlanır. - Son olarak, alternatif görünüm mesajın alternatif görünümler koleksiyonuna eklenir.
// Create a new instance of MailMessage class | |
var eml = new MailMessage | |
{ | |
// Set sender and recipient | |
From = new MailAddress("sender@domain.com"), | |
To = new MailAddress("recipient@domain.com"), | |
// Set subject and body | |
Subject = "New message with image", | |
HtmlBody = @"<!DOCTYPE html> | |
<html> | |
<head> | |
<style> | |
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;} | |
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal; | |
font-weight:normal;color:#000000;background-color:#ffffff;} | |
</style> | |
</head> | |
<body> | |
<h3>New message</h3> | |
<p>This is a new message created by Aspose.Email.</p> | |
<img src='cid:myImage' /> | |
</body> | |
</html>" | |
}; | |
var alternateView = eml.AlternateViews.GetView(MediaTypeNames.Text.Html); | |
var imageResource = new LinkedResource(path + "image.png", MediaTypeNames.Image.Png) | |
{ | |
ContentId = "image1" | |
}; | |
alternateView.LinkedResources.Add(imageResource); | |
eml.Save("message_with_image.eml", SaveOptions.DefaultEml); |
HTML Dosyasından EML Dosyası Oluşturma
Bunu yapmanın bir yolu, bir HTML dosyasıyla başlayıp bunu EML’ye dönüştürmektir. Bu, göndermek istediğiniz bir HTML’niz varsa faydalı olabilir. Bunun için önce HTML içeriğine sahip olmamız gerekiyor. Bu dosyaya content.html
adını verelim. İşte bir örneği:
<!DOCTYPE html>
<html>
<head>
<title>Benim E-postam</title>
</head>
<body>
<h1>Merhaba,</h1>
<img src="logo.png" alt="Logo">
<p>Bu, HTML'den oluşturulan ilk e-postamdır.</p>
</body>
</html>
Ayrıca, HTML’yi içeren tüm resimleri önceden hazırlamanız ve HTML dosyasında onlara doğru yolu belirtmeniz gerekir.
Artık, content.html
dosyasından HTML gövdesini ayarlayarak kolayca bir MailMessage oluşturabiliriz.
- Öncelikle yeni bir HtmlLoadOptions nesnesi oluşturun.
- PathToResources içinde resimlerin yolunu içeren bir dize ayarlayın.
- EML’nin düz metin alternatif görünümünü içermesi gerekiyorsa, ShouldAddPlainTextView özelliğini true olarak ayarlayın.
- HTML dosyasını yükleyerek ve HtmlLoadOptions nesnesini bir parametre olarak geçirerek bir MailMessage nesnesi oluşturun.
- Ek mesaj özelliklerini ayarlayın.
- Son olarak, MailMessage nesnesini Save yöntemini kullanarak EML dosyası olarak kaydedin.
var htmlloadOptions = new HtmlLoadOptions | |
{ | |
PathToResources = path, | |
ShouldAddPlainTextView = true | |
}; | |
var eml = MailMessage.Load(path + @"content.html", htmlloadOptions); | |
// Set sender and recipient | |
eml.From = new MailAddress("sender@domain.com"); | |
eml.To = new MailAddress("recipient@domain.com"); | |
// Set subject | |
eml.Subject = "New message from HTML"; | |
// Save the message in EML format | |
eml.Save("message_from_html.eml", SaveOptions.DefaultEml); |
Outlook’ta HTML Mesajının Görünümünü İyileştirme İpuçları
HTML mesajınızı Outlook’ta görüntülemek için, kodunun Outlook render motoruyla uyumlu olduğundan emin olmalısınız; bu, çoğu web tarayıcısından farklıdır. HTML e-posta mesajınızı Outlook’ta etkileyebilecek bazı yaygın sorunlar şunlardır:
- Outlook, arka plan resimleri, akışlar, kenar boşlukları, iç boşluklar vb. gibi bazı etiketlerini ve CSS özelliklerini desteklemez. İstenilen düzen ve formatlama için satır içi stiller, tablolar veya koşullu yorumlar kullanmanız gerekebilir.
- Outlook, öğeler arasında ekstra boşluklar veya satırlar ekleyebilir veya bazı öğeleri tamamen kaldırabilir. Bunu önlemek için kesilmeyen boşluklar, sıfır genişlikte boşluklar veya boş tablo hücreleri kullanmanız gerekebilir.
- Outlook, HTML dosyanızın kodlamasını veya karakter setini değiştirebilir; bu, bazı karakterlerin yanlış görüntülenmesine neden olabilir. Bunu önlemek için meta etiketi kullanarak kodlama ve karakter setini belirtmeniz gerekebilir.
Sonuç
Bu blog yazısında, Aspose.Email kullanarak C#’ta programlı olarak MIME mesajları oluşturmayı öğrendiniz. Adım adım öğretici ve kod örnekleri, sıfırdan ve HTML dosyasından bir EML dosyası oluşturmayı, e-posta mesajının HTML içeriğine resim eklemeyi gösterdi ve HTML mesajınızın Outlook’ta görünümünü iyileştirmek için faydalı ipuçları sundu.
- Aspose.Email for .NET hakkında daha fazla bilgi edinebilir ve ücretsiz olarak deneyebilirsiniz.
- Aspose.Email’in daha fazla özellik ve işlevselliğini belgelerde kontrol edebilirsiniz.
- Sorularınızı forumumuzda bekliyoruz.