Mesaj Ekleriyle Çalışma

Aspose Outlook ile Ekleri Yönetme

Outlook Mesajı (MSG) Dosyaları Oluşturma ve Kaydetme, mesajların nasıl oluşturulup kaydedileceğini ve ekli MSG dosyalarının nasıl oluşturulacağını açıkladı. Bu makale, Aspose.Email ile Microsoft Outlook eklerini nasıl yöneteceğinizi açıklar. Bir mesaj dosyasındaki ekler, MapiMessage sınıfının Attachments özelliği kullanılarak erişilir ve diske kaydedilir. Attachments özelliği, MapiAttachmentCollection sınıfı tipinde bir koleksiyondur.

Ek’in Satır İçi mi Normal mi olduğunu Kontrol Et

"Inline" ve "Regular" ekler, bir e-posta mesajına dahil edilme şekillerini ifade eder. Regular ekler, geleneksel şekilde eklenen dosyalardır. Genellikle e-posta istemcisinde bir listede gösterilir ve alıcı tarafından indirilebilir ve yerel bir depolamaya kaydedilebilir. Inline ekler, gömülü veya satır içi görseller olarak da bilinir, genellikle e-postanın gövdesine resim veya diğer medya eklemek için kullanılır. Ayrı bir listede gösterilmezler, bunun yerine e-postanın içeriğinde, örneğin gövdesinde doğrudan gösterilirler. Bu, mesajın içeriğinin bir parçası olan resim veya diğer medyaları eklemenizi sağlar. Aşağıdaki kod örneği, bir ekin satır içi mi yoksa normal mi olduğunu nasıl belirleyeceğinizi gösterir:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("message.msg")

for attachment in msg.attachments:
    print(f"{attachment.display_name}:{attachment.is_inline}")

Outlook Mesajı (MSG) dosyasından Ekleri Kaydet

Bir MSG dosyasından ekleri kaydetmek için:

  1. MapiAttachmentCollection koleksiyonunda döngü yaparak bireysel ekleri alın.
  2. Ekleri kaydetmek için MapiAttachment sınıfının Save() metodunu çağırın.

Aşağıdaki kod parçacığı, ekleri yerel diske nasıl kaydedeceğinizi gösterir.

import aspose.email as ae

data_dir = "C://dataDir/"
file_name = "message.msg"

# Create an instance of MapiMessage from file
message = ae.mapi.MapiMessage.from_file(data_dir + file_name)

# Iterate through the attachments collection
for attachment in message.attachments:
    # Save the individual attachment
    attachment.save(data_dir + attachment.file_name)

İç İçe Geçmiş Mail Mesajı Eklerini Alma

Gömülü OLE ekleri de MapiMessage sınıfının Attachment koleksiyonunda görünür. Aşağıdaki kod örneği, gömülü mesaj eklerini ayrıştırmak ve diske kaydetmek için bir mesaj dosyasını işler. MapiMessage sınıfının FromProperties() static metodu, gömülü ekten yeni bir mesaj oluşturabilir. Aşağıdaki kod parçacığı, iç içe geçmiş posta mesajı eklerini nasıl alacağınızı gösterir.

import aspose.email as ae

eml = ae.mapi.MapiMessage.load("my.msg")

# Create a MapiMessage object from the individual attachment
get_attachment = ae.mapi.MapiMessage.from_properties(eml.attachments[0].object_data.properties)

# Create an object of type MailMessageInterpreter from the above message and save the embedded message to a file on disk
mail_message = get_attachment.to_mail_message(ae.mapi.MailConversionOptions())
mail_message.save("NestedMailMessageAttachments_out.eml", ae.SaveOptions.default_eml)

Ekleri Kaldırma

Aspose Outlook kütüphanesi, Microsoft Outlook Message (.msg) dosyalarından ekleri kaldırma işlevselliği sağlar:

  • RemoveAttachments() metodunu çağırın. Parametre olarak mesaj dosyasının yolunu alır. Bu metod, public static bir metod olarak uygulanmıştır, bu yüzden nesne oluşturmanıza gerek yoktur.

Aşağıdaki kod parçacığı, Ekleri nasıl kaldıracağınızı gösterir.

import aspose.email as ae

ae.mapi.MapiMessage.remove_attachments("AttachmentsToRemove_out.msg")

Ayrıca MapiMessage sınıfının static metodu DestroyAttachment()‘ı da çağırabilirsiniz. Bu yöntem, RemoveAttachment()‘a göre daha hızlı çalışır çünkü RemoveAttachment() mesaj dosyasını ayrıştırır.

import aspose.email as ae

# Destroy attachments in the MapiMessage
ae.mapi.MapiMessage.destroy_attachments(data_dir + "AttachmentsToDestroy_out.msg")

MSG Ekleri Ekleme

Bir Outlook mesajı, eklerde normal ya da gömülü mesajlar olarak diğer Microsoft Outlook mesajlarını içerebilir. MapiAttachmentCollection, her iki ek tipini de oluşturmak için Add metodunun aşırı yüklenmiş üyelerini sağlar.

Bir MapiMessage’a Referans Ekisi Ekle

"Referans eki" genellikle gerçek dosya yerine harici bir kaynağa referans veya bağlantı içeren bir eki ifade eder. Bu referanslar, HTML e-postalarında uzaktaki bir sunucuda barındırılan dış görüntüler veya kaynaklara bağlanmak için sıkça kullanılır. Tüm dosyayı gömmek yerine, referans eki bir URL veya harici içeriğe referans içerir.

Aspose.Email, aşağıdaki kod örneğinde gösterildiği gibi referans eklerinin doğru görüntülenmesi için bir dizi araç sunar:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("message.msg")

# Add reference attachment
msg.attachments.add("Document.pdf",
    "https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
    "https://drive.google.com/drive/my-drive",
    "GoogleDrive")

# Also, you can set additional attachment properties
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PERMISSION_TYPE, int(ae.AttachmentPermissionType.ANYONE_CAN_EDIT))
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_ORIGINAL_PERMISSION_TYPE, 0)
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_IS_FOLDER, False)
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PROVIDER_ENDPOINT_URL, "")
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PREVIEW_URL, "")
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_THUMBNAIL_URL, "")
# Finally save the message
msg.save("msg_with_ref_attach.msg")

Mesajı Ek Olarak Göm

Aşağıdaki kod parçacığı, bir MSG dosyasına gömülü Outlook MSG dosyalarının PR_ATTACH_METHOD değerinin 5 olduğunu nasıl göstereceğinizi gösterir.

import aspose.email as ae

# Create a new MapiMessage
message = ae.mapi.MapiMessage("from@test.com", "to@test.com", "Subj", "This is a message body")

# Load the attachment message
attach_msg = ae.mapi.MapiMessage.load("Message.msg")

# Add the attachment to the message
message.attachments.add("Weekly report.msg", attach_msg)

# Save the message with the embedded message attachment
message.save("WithEmbeddedMsg_out.msg")

Eklerden Gömülü Mesajları Okuma

Aşağıdaki kod parçacığı, ekten gömülü mesajı nasıl okuyacağınızı gösterir.

import aspose.email as ae

file_name = "path/to/file.msg"

# Load the MapiMessage from file
message = ae.mapi.MapiMessage.from_file(file_name)

# Check if the first attachment is an Outlook message
if message.attachments[0].object_data.is_outlook_message:
    # Get the embedded message as MapiMessage
    embedded_message = message.attachments[0].object_data.to_mapi_message()
    # Perform further operations with the embedded message
    # ...

Eklerin Eklenmesi ve Değiştirilmesi

Aspose.Email API, ekleri ana mesajda belirli bir indekse ekleme yeteneği sağlar. Ayrıca bir ekin içeriğini başka bir mesaj ekine ile değiştirme imkanı sunar. Aşağıdaki kod parçacığı, eklerin eklenmesi ve değiştirilmesini gösterir.

Belirli Konuma Ekle

Aspose.Email API, MapiAttachmentCollection’ın Insert metodunu (MapiAttachmentCollection Insert(int index, string name, MapiMessage msg)) kullanarak bir MSG ekini ana MSG’ye ekleme yeteneği sağlar. Aşağıdaki kod parçacığı, belirli bir konuma nasıl ekleneceğini gösterir.

import aspose.email as ae
from io import BytesIO

file_name = "path/to/file.msg"

# Load the MapiMessage from file
message = ae.mapi.MapiMessage.load(file_name)

# Save the attachment to a memory stream
memory_stream = BytesIO()
message.attachments[2].save(memory_stream)

# Load the attachment from the memory stream
get_data = ae.mapi.MapiMessage.load(memory_stream)

# Insert the loaded attachment at index 1
message.attachments.insert(1, "new 11", get_data)

Ek İçeriklerini Değiştir

Bu, Replace metodu kullanılarak gömülü ek içeriklerini yenileriyle değiştirmek için kullanılabilir. Ancak, PR_ATTACH_NUM = 4 (örneğin) olan bir eki, koleksiyon.Count = 2 iken eklemeye yarmaz. Aşağıdaki kod parçacığı, ek içeriklerini nasıl değiştireceğinizi gösterir.

import aspose.email as ae
from io import BytesIO
file_name = "path/to/file.msg"

# Load the MapiMessage from file
message = ae.mapi.MapiMessage.load(file_name)

# Save the attachment to a memory stream
memory_stream = BytesIO()
message.attachments[2].save(memory_stream)

# Load the attachment from the memory stream
get_data = ae.mapi.MapiMessage.load(memory_stream)

# Replace the attachment at index 1 with the loaded attachment
message.attachments.replace(1, "new 1", get_data)

Bir MapiMessage’deki Ek’i Yeniden Adlandır

Bir dosyadan yüklenen e-posta mesajlarındaki eklerin görüntülenen adlarını değiştirmek mümkündür. Aşağıdaki kod örneği, bunu nasıl yapacağınızı gösterir:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("message.msg")

msg.attachments[0].display_name = "New display name 1"
msg.attachments[1].display_name = "New display name 2"