Trabalhando com Propriedades MAPI
Acessando e Definindo Propriedades MAPI do Outlook
A classe MapiProperty representa uma propriedade MAPI, que contém:
- Nome: uma string que representa o nome da propriedade.
- Tag: um longo que representa a tag da propriedade.
- Dados: um array de bytes que representa os dados da propriedade.
Obtendo Propriedade MAPI usando a Tag da Propriedade MAPI
Para obter propriedades MAPI:
- Crie uma instância de MapiMessage carregando de arquivos ou stream.
- Obtenha a MapiProperty de MapiMessage.Properties pelas chaves MapiPropertyTag.
- Obtenha os Dados da MapiProperty pelo método GetX.
O seguinte trecho de código mostra como obter a propriedade MAPI usando a tag da propriedade MAPI.
For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet | |
# Load from file | |
msg = MapiMessage.from_file(dataDir + "message.msg") | |
# Access the MapiPropertyTag.PR_SUBJECT property | |
prop = msg.properties[MapiPropertyTag.SUBJECT] | |
# If the property is not found, check the MapiPropertyTag.PR_SUBJECT_W (which is a // Unicode peer of the MapiPropertyTag.PR_SUBJECT) | |
if prop is None: | |
prop = msg.properties[MapiPropertyTag.SUBJECT_W] | |
# Cannot found | |
if prop is None: | |
print("No property found!") | |
# Get the property data as string | |
subject = prop.get_string() | |
print("Subject:" + subject) | |
# Read internet code page property | |
prop = msg.properties[MapiPropertyTag.INTERNET_CPID] | |
if prop is not None: | |
print("CodePage:" + str(prop.get_long())) |
Definindo Propriedades MAPI
O seguinte trecho de código mostra como definir propriedades MAPI.
For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet | |
# Setting MAPI Properties sample | |
msg = MapiMessage("user1@gmail.com", "user2@gmail.com", "This is subject", "This is body") | |
msg.set_property(MapiProperty(MapiPropertyTag.SENDER_ADDRTYPE, bytes("EX", "utf-8"))) | |
recipientTo = msg.recipients[0] | |
propAddressType = MapiProperty(MapiPropertyTag.RECEIVED_BY_ADDRTYPE, bytes("MYFAX", "utf-8")) | |
recipientTo.set_property(propAddressType); | |
faxAddress = "My Fax User@/FN=fax#/VN=voice#/CO=My Company/CI=Local" | |
propEmailAddress = MapiProperty(MapiPropertyTag.RECEIVED_BY_EMAIL_ADDRESS, bytes(faxAddress, "utf-8")) | |
recipientTo.set_property(propEmailAddress) | |
msg.set_message_flags(MapiMessageFlags.UNSENT | MapiMessageFlags.FROMME) | |
msg.set_property( MapiProperty(MapiPropertyTag.RTF_IN_SYNC, long_to_mapi_bytes(1)) ) | |
# DateTime property | |
modification_date = datetime(2013, 9, 11) | |
prop = MapiProperty(MapiPropertyTag.LAST_MODIFICATION_TIME, date_to_mapi_bytes(modification_date)) | |
msg.set_property(prop) | |
msg.save("SetMapiProperties_out.msg") |
onde a definição do método convertDateTime é a seguinte:
Lendo Propriedades Nomeadas MAPI de Arquivos MSG do Outlook
Aspose.Email fornece um conjunto de APIs para trabalhar com arquivos MSG, incluindo a extração de propriedades MAPI nomeadas.
Ler Propriedades MAPI Nomeadas de um arquivo MSG
Para ler propriedades MAPI nomeadas, podemos usar a propriedade named_properties da classe MapiMessage. O seguinte exemplo de código mostra como carregar uma mensagem, recuperar todas as propriedades MAPI nomeadas, iterar sobre cada propriedade para verificar seu valor:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("my.msg")
# Obter todas as propriedades MAPI nomeadas
properties = msg.named_properties.values
# Ler todas as propriedades em um loop foreach
for prop in properties:
# Ler qualquer propriedade específica
if prop.descriptor.canonical_name == "PidLidSideEffects":
print(f"{prop.descriptor.canonical_name} = {prop}")
if prop.descriptor.canonical_name == "PidLidInternetAccountName":
print(f"{prop.descriptor.canonical_name} = {prop}")
Lendo Propriedade MAPI Nomeada de Anexos
Aspose.Email possibilita a recuperação de todas as propriedades MAPI nomeadas de um anexo. O seguinte exemplo de código mostra como ler propriedades MAPI nomeadas de anexos:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("my.msg")
# Obter todas as propriedades MAPI nomeadas
attach_properties = msg.attachments[0].named_properties.values
# Ler todas as propriedades em um loop foreach
for prop in attach_properties:
# Ler qualquer propriedade específica
if prop.descriptor.name == "AttachmentOriginalUrl":
print(f"{prop.descriptor.name} = {prop.get_string()}")
if prop.descriptor.name == "AttachmentWasSavedToCloud":
print(f"{prop.descriptor.name} = {prop.get_boolean()}")
Remover Propriedades de MSGs e Anexos
Este exemplo de código demonstra a criação de uma mensagem MSG do Outlook com um conteúdo de corpo e um arquivo de mensagem anexado. Também mostra como excluir uma propriedade de anexo da mensagem criada.
import aspose.email as ae
# criar um MSG
msg = ae.mapi.MapiMessage("from@doamin.com", "to@domain.com", "subject", "body");
msg.set_body_content("<html><body><h1>Este é o conteúdo do corpo</h1></body></html>", ae.mapi.BodyContentType.HTML)
# carregar mensagem e adicioná-la ao MSG criado como anexo
attachment = ae.mapi.MapiMessage.load("attach.msg")
msg.attachments.add("Outlook2 Test subject.msg", attachment)
# contagem de propriedades de anexo antes da remoção
print(f"Antes da remoção = {msg.attachments[0].properties.count}")
# Excluir qualquer propriedade de anexo
msg.attachments[0].remove_property(923467779)
# contagem de propriedades de anexo após a remoção
print(f"Após a remoção = {msg.attachments[0].properties.count}")