Outlook Dosyaları Oluşturma ve Kaydetme

Aspose.Email, Outlook mesaj (MSG) dosyaları oluşturmayı destekler. Bu makale şunların nasıl yapılacağını açıklar:

Outlook Mesajları Oluştur ve Kaydet

Bu MailMessage sınıf, … içerir Save() Outlook MSG dosyalarını diske veya akışa kaydedebilen yöntem. Aşağıdaki kod parçacıkları … örneği oluşturur. MailMessage sınıf, from, to, subject ve body gibi özellikleri ayarlar. Save() yöntem dosya adını argüman olarak alır. Ayrıca, Outlook Mesajları bir … ile oluşturulabilir. sıkıştırılmış RTF gövdesi kullanarak MapiConversionOptions

  1. Yeni bir … örneği oluşturun MailMessage sınıfını ve From, To, Subject ve Body özelliklerini ayarlar.
  2. Şuğu çağırın MapiMessage sınıf FromMailMessage yöntem, … nesnesini kabul eder MailMessage tür. FromMailMessage yöntem … dönüştürür MailMessage bir MapiMessage (MSG).
  3. Şuğu çağırın MapiMessage.Save() MSG dosyasını kaydetmek için yöntem.

Aşağıdaki kodu, Windows uygulamasındaki düğme kontrolünün tıklama olayına yazın.

// Create an instance of the MailMessage class
MailMessage mailMsg = new MailMessage();

// Set from, to, subject and body properties
mailMsg.From = "sender@domain.com";
mailMsg.To = "receiver@domain.com";
mailMsg.Subject = "This is test message";
mailMsg.Body = "This is test body";

// Create an instance of the MapiMessage class and pass MailMessage as argument
MapiMessage outlookMsg = MapiMessage.FromMailMessage(mailMsg);
            
// Save the message (MSG) file
string strMsgFile = @"CreatingAndSavingOutlookMessages_out.msg";
outlookMsg.Save(dataDir + strMsgFile);

Eklentili MSG Dosyaları Oluştur

Yukarıdaki örnekte, basit bir MSG dosyası oluşturduk. Aspose.Email ayrıca ekli mesaj dosyalarını kaydetmeyi destekler. Tek yapmanız gereken ekleri … eklemektir. MailMessage örnek. Add() metodunu çağırarak ek ekleyin MailMessage.Attachments koleksiyon. Yukarıda oluşturulan forma bir listbox ekleyin ve iki buton ekleyin, biri ekleme diğeri ekleri kaldırma için. Ekleri ekleyen uygulama şu şekilde çalışır:

  1. Add Attachment düğmesi tıklandığında, kullanıcıların ekleri göz atıp seçmelerine yardımcı olmak için bir Open File Dialog gösterilir.
  2. Bir dosya seçildiğinde, tam yolu bir listeye eklenir.
  3. MSG dosyası oluşturulduğunda, ek yolları listeden alınır ve şuna eklenir: MailMessage.Attachments koleksiyon.

Aşağıdaki kodu Ekleme butonunun tıklama olayına yazın.

// Open a file open dialog to select the attachment
OpenFileDialog fd = new OpenFileDialog();
// If user selected the file and clicked OK, add the file name and path to the list
if (fd.ShowDialog() == DialogResult.OK)
{
    lstAttachments.Items.Add(fd.FileName);
}

Remove Attachment butonu tıklandığında, listbox’tan seçili öğeleri kaldırın. Remove Attachment butonunun tıklama olayına aşağıdaki kodu yazın.

// Check if the user has selected any item in the attachments listbox
if (lstAttachments.SelectedItems.Count > 0)
{
    // Remove the selected attachment from the listbox
    lstAttachments.Items.RemoveAt(lstAttachments.SelectedIndex);
}

Ekleri eklemek için kodu şuraya ekleyin: MailMessage örnek. Write Msg fonksiyonu için son kod aşağıdaki gibi yazılmıştır.

// File name for output MSG file
string strMsgFile;

// Open a save file dialog for saving the file and Add filter for msg files
SaveFileDialog fd = new SaveFileDialog();
fd.Filter = "Outlook Message files (*.msg)|*.msg|All files (*.*)|*.*";

// If user pressed OK, save the file name + path
if (fd.ShowDialog() == DialogResult.OK)
{
    strMsgFile = fd.FileName;
}
else
{
    // If user did not selected the file, return
    return;
}

// Create an instance of MailMessage class
MailMessage mailMsg = new MailMessage();
// Set from, to, subject and body properties
mailMsg.From = txtFrom.Text;
mailMsg.To = txtTo.Text;
mailMsg.Subject = txtSubject.Text;
mailMsg.Body = txtBody.Text;

// Add the attachments
foreach (string strFileName in lstAttachments.Items)
{
    mailMsg.Attachments.Add(new Attachment(strFileName));
}

// Create an instance of MapiMessage class and pass MailMessage as argument
MapiMessage outlookMsg = MapiMessage.FromMailMessage(mailMsg);
outlookMsg.Save(strMsgFile);

RTF Gövdesiyle MSG Dosyaları Oluştur

Aspose.Email ile zengin metin (RTF) gövdeli Outlook Mesajı (MSG) dosyaları da oluşturabilirsiniz. RTF gövdesi metin biçimlendirmesini destekler. Bunu, … ayarlayarak oluşturun. MailMessage.HtmlBody özellik. Bir … dönüştürdüğünüzde MailMessage örnek bir MapiMessage örneğinde, HTML gövdesi RTF’ye dönüştürülür. Bu şekilde, e-posta gövdesinin biçimlendirmesi korunur.

Aşağıdaki örnek, RTF gövdesine sahip bir MSG dosyası oluşturur. HTML gövdesinde bir başlık, kalın ve altı çizili biçimlendirme uygulanmıştır. Bu biçimlendirme, HTML RTF’ye dönüştürüldüğünde korunur.

// Create an instance of the MailMessage class
MailMessage mailMsg = new MailMessage();
            
// Set from, to, subject and body properties
mailMsg.From = "from@domain.com";
mailMsg.To = "to@domain.com";
mailMsg.Subject = "subject";
mailMsg.HtmlBody = "<h3>rtf example</h3><p>creating an <b><u>outlook message (msg)</u></b> file using Aspose.Email.</p>";
            
MapiMessage outlookMsg = MapiMessage.FromMailMessage(mailMsg);
outlookMsg.Save(dataDir + "CreatingMSGFilesWithRTFBody_out.msg");

MAPI Mesaj Gövdesi için RTF Sıkıştırması

NOT: Sıkıştırma işlemi, mesaj oluştururken performansı yavaşlatabilir. Bu gerçeği anlayarak ve sıkıştırma bayrağını dosya boyutu ile performans arasındaki belirli gereksinimler ve uzlaşma doğrultusunda yapılandırarak, geliştiriciler e-posta mesajlarıyla çalışırken MSG ve PST dosyalarının oluşturulmasını etkili bir şekilde yönetebilir.

RTF sıkıştırması, bir mesajın boyutunu ve Microsoft Outlook’un e-posta mesajları ve diğer verileri depolamak için kullandığı PST (Personal Storage Table) dosyalarının boyutunu azaltmayı amaçlar. Mesaj gövdesini yapılandırırken RTF sıkıştırması kullanarak, geliştiriciler e-posta mesajlarını depolamak için gereken bellek miktarını azaltabilir veya mesajları iletirken ağ bant genişliğini optimize edebilir.

Bu amaçla iki aşırı yüklü yöntem tasarlandı:

  • MapiMessageItemBase.SetBodyContent(string content, BodyContentType contentType, bool compression): Bu yöntem, belirtilen string içeriği ve gövde içerik türünü (örneğin düz metin, HTML vb.) kullanarak mesaj gövdesi içeriğini ayarlamanıza olanak tanır. İsteğe bağlı compression parametresi, içeriğin RTF sıkıştırmasıyla sıkıştırılıp sıkıştırılmayacağını belirten bir değerdir. compression true ise, içerik sıkıştırılır ve daha küçük bir mesaj boyutu elde edilir.

  • MapiMessageItemBase.SetBodyRtf(string content, bool compression): Bu yöntem, mesaj gövdesinin içeriğini RTF formatında ayarlar. content parametresi, mesaj gövdesi olarak ayarlanacak RTF içeriğini temsil eden bir dizedir. Önceki yöntem gibi, compression parametresi içeriğin RTF sıkıştırması uygulanıp uygulanmayacağını belirler. compression true ise, RTF içeriği sıkıştırılarak boyutu azaltılır.

Aşağıdaki kod örneği, html gövdesini nasıl ayarlayıp sıkıştırılmış tutacağınızı gösterir:

var htmlBody = "<html><body><h1>This is the body content</h1></body></html>";

var msg = new MapiMessage("from@domain.com", "to@domain.com", "subject", "body");
// set the html body and keep it compressed
// this will reduce the message size
msg.SetBodyContent(htmlBody, BodyContentType.Html, true);

Ayrıca bir MapiConversionOptions.UseBodyCompression özellik. Bu özellik etkinleştirildiğinde, MailMessage’tan MapiMessage’e dönüşüm sırasında RTF gövde sıkıştırması uygulanır ve daha küçük bir MSG dosyası boyutu elde edilir. Aşağıdaki kod örneğinde gösterilmiştir:

var message = MailMessage.Load(fileName);
var options = new MapiConversionOptions();
options.UseBodyCompression = true;
var msg = MapiMessage.FromMailMessage(message, options);

Mesajı Taslak Durumunda Kaydet

E-postalar, birisi düzenlemeye başladıktan sonra daha sonra tamamlamak üzere geri dönmek istediğinde taslak olarak kaydedilir. Aspose.Email, bir mesaj bayrağı ayarlanarak e-posta mesajlarını taslak durumunda kaydetmeyi destekler. Aşağıda bir Outlook e-posta mesajını (MSG) taslak olarak kaydetmek için örnek kod yer almaktadır.

// Change properties of an existing MSG file
string strExistingMsg = @"message.msg";
            
// Load the existing file in MailMessage and Change the properties
MailMessage msg = MailMessage.Load(dataDir + strExistingMsg, new MsgLoadOptions());
msg.Subject += "NEW SUBJECT (updated by Aspose.Email)";
msg.HtmlBody += "NEW BODY (updated by Aspose.Email)";
            
// Create an instance of type MapiMessage from MailMessage, Set message flag to un-sent (draft status) and Save it
MapiMessage mapiMsg = MapiMessage.FromMailMessage(msg);
mapiMsg.SetMessageFlags(MapiMessageFlags.MSGFLAG_UNSENT);
mapiMsg.Save(dataDir + "SavingMessageInDraftStatus_out.msg");