메시지 첨부 파일 작업
Aspose Outlook을 사용한 첨부 파일 관리
Outlook 메시지(MSG) 파일 생성 및 저장에서는 메시지를 생성하고 저장하는 방법, 그리고 첨부 파일이 포함된 MSG 파일을 만드는 방법을 설명합니다. 이 문서는 Aspose.Email을 사용한 Microsoft Outlook 첨부 파일 관리 방법을 안내합니다. 메시지 파일의 첨부 파일은 MapiMessage 클래스의 Attachments 속성을 사용해 액세스하고 디스크에 저장합니다. Attachments 속성은 MapiAttachmentCollection 타입의 컬렉션입니다.
첨부 파일이 인라인인지 일반인지 확인
"Inline" 및 "Regular" 첨부 파일은 이메일 메시지에 포함되는 방식을 의미합니다. Regular 첨부 파일은 전통적인 방식으로 파일이 첨부되는 것으로, 일반적으로 이메일 클라이언트 내 리스트에 표시되어 수신자가 다운로드하여 로컬에 저장할 수 있습니다. Inline 첨부 파일은 임베드된 이미지나 미디어로, 이메일 본문에 직접 표시됩니다. 별도 리스트에 표시되지 않고 이메일 내용 안에 바로 보여집니다. 이를 통해 메시지 내용의 일부인 이미지나 미디어를 포함할 수 있습니다. 아래 코드 샘플은 첨부 파일이 인라인인지 일반인지 판단하는 방법을 보여줍니다:
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 메시지(MSG) 파일에서 첨부 파일 저장
MSG 파일에서 첨부 파일을 저장하려면:
- MapiAttachmentCollection 컬렉션을 반복하여 개별 첨부 파일을 가져옵니다.
- 첨부 파일을 저장하려면 MapiAttachment 클래스의 Save() 메서드를 호출하십시오.
다음 코드 스니펫은 첨부 파일을 로컬 디스크에 저장하는 방법을 보여줍니다.
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)
중첩 메일 메시지 첨부 파일 가져오기
임베디드 OLE 첨부 파일은 MapiMessage 클래스의 Attachment 컬렉션에도 나타납니다. 다음 코드 예제는 메시지 파일에서 임베디드 메시지 첨부 파일을 파싱하고 디스크에 저장합니다. MapiMessage 클래스의 FromProperties() 정적 메서드는 임베디드 첨부 파일로부터 새 메시지를 생성할 수 있습니다. 다음 코드 스니펫은 중첩된 메일 메시지 첨부 파일을 얻는 방법을 보여줍니다.
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)
첨부 파일 제거
Aspose Outlook 라이브러리는 Microsoft Outlook 메시지(.msg) 파일에서 첨부 파일을 제거하는 기능을 제공합니다:
- RemoveAttachments() 메서드를 호출하십시오. 이 메서드는 메시지 파일 경로를 매개변수로 받습니다. 정적(public static) 메서드로 구현되어 있어 객체를 인스턴스화할 필요가 없습니다.
다음 코드 스니펫은 첨부 파일을 제거하는 방법을 보여줍니다.
import aspose.email as ae
ae.mapi.MapiMessage.remove_attachments("AttachmentsToRemove_out.msg")
MapiMessage 클래스의 정적 메서드 DestoryAttachment()도 호출할 수 있습니다. 이 메서드는 RemoveAttachment()보다 빠르게 작동합니다. RemoveAttachment()는 메시지 파일을 파싱하기 때문입니다.
import aspose.email as ae
# Destroy attachments in the MapiMessage
ae.mapi.MapiMessage.destroy_attachments(data_dir + "AttachmentsToDestroy_out.msg")
MSG 첨부 파일 추가
Outlook 메시지는 일반 첨부 파일 또는 임베디드 메시지 형태로 다른 Outlook 메시지를 첨부할 수 있습니다. MapiAttachmentCollection은 두 종류의 첨부 파일을 모두 포함하는 Outlook 메시지를 만들기 위한 Add 메서드의 오버로드 된 멤버를 제공합니다.
사용해 보세요!
무료로 온라인에서 이메일 첨부 파일을 추가하거나 제거하세요 Aspose.Email Editor App.
MapiMessage에 참조 첨부 파일 추가
"Reference attachment"는 일반적으로 실제 파일 자체가 아니라 외부 리소스에 대한 참조나 링크를 포함하는 첨부 파일을 의미합니다. 이러한 참조는 HTML 이메일에서 외부 이미지나 원격 서버에 호스팅된 리소스에 연결할 때 자주 사용됩니다. 전체 파일을 임베드하는 대신, 참조 첨부 파일은 외부 컨텐츠에 대한 URL 또는 참조를 포함합니다.
Aspose.Email은 다음 코드 샘플에 제시된 올바른 참조 첨부 파일 표시를 위한 도구 세트를 제공합니다:
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")
메시지를 첨부 파일로 임베드
다음 코드 스니펫은 MSG 파일에 임베디드된 Outlook MSG 파일이 값이 5인 PR_ATTACH_METHOD를 포함하는 방법을 보여줍니다.
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")
첨부 파일에서 포함된 메시지 읽기
다음 코드 스니펫은 첨부 파일에서 임베디드 메시지를 읽는 방법을 보여줍니다.
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
# ...
첨부 파일 삽입 및 교체
Aspose.Email API는 상위 메시지의 특정 인덱스에 첨부 파일을 삽입하는 기능을 제공하며, 다른 메시지 첨부 파일로 첨부 파일 내용을 교체하는 기능도 제공합니다. 다음 코드 스니펫은 첨부 파일 삽입 및 교체 방법을 보여줍니다.
특정 위치에 삽입
Aspose.Email API는 MapiAttachmentCollection의 Insert 메서드(MapiAttachmentCollection Insert(int index, string name, MapiMessage msg))를 사용하여 상위 MSG에 MSG 첨부 파일을 삽입하는 기능을 제공합니다. 다음 코드 스니펫은 특정 위치에 삽입하는 방법을 보여줍니다.
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)
첨부 파일 내용 교체
Replace 메서드를 사용하여 임베디드 첨부 파일 내용을 새로운 것으로 교체할 수 있습니다. 하지만 collection.Count = 2인 컬렉션에 PR_ATTACH_NUM = 4(예)와 같은 첨부 파일을 삽입할 수는 없습니다. 다음 코드 스니펫은 첨부 파일 내용을 교체하는 방법을 보여줍니다.
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)
MapiMessage에서 첨부 파일 이름 바꾸기
파일에서 로드한 이메일 메시지의 첨부 파일 표시 이름을 수정할 수 있습니다. 아래 코드 샘플은 이를 수행하는 방법을 보여줍니다:
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"