Извлечь MSG-файл из EML-файла - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь извлечь MSG-файл из EML-вложения. Я могу заставить скрипт создать имя вложения, но не могу понять, как получить вложение для сохранения в PST, а не в EML, мойкод выглядит следующим образом

session = new RDOSession(); 
session.LogonPstStore(C:\\temp\\outputfile.pst);                    
var mail = RdoFolder.Items.Add("IPM.Mail");
mail.Sent = true;
mail.Import(C:\\temp\\randomfile.eml, 1024);
mail.Save();

Любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Вы находитесь рядом, но вам нужно использовать .EmbeddedMsg property, чтобы получить файл MSG.Пример кода ниже.

Dim fileItmName As String 'The fullname of the EML file including path
Dim RMsg, AMsg

'Outlook folder
Set fldrOutlook = RSession.GetDefaultFolder(olFolderInbox).Folders("[Subfolder]").Folders("[Subfolder]")  'etc.

'Bring EML message into Outlook (you can delete it after you pull the attachment)
Set RMsg = fldrOutlook.Items.Add
RMsg.Sent = True
RMsg.Import fileItmName, 1024
RMsg.Save

'find msg attachment
'https://msdn.microsoft.com/en-us/vba/outlook-vba/articles/attachment-object-outlook
For Each attch In RMsg.Attachments
    If Right(attch.FileName, 4) = ".msg" Then 'In case the EML message has more than one attachment.
        Set AMsg = attch.EmbeddedMsg 'This is the MSG message you are trying to get.

        'Process the message

    end if


Next attch
0 голосов
/ 08 июня 2018

Поскольку вам не нужно внешнее сообщение, вам нужно сначала перейти к внутреннему сообщению.Вызовите RDOSession.CreateMessageFromMsgFile, чтобы создать временный файл MSG (вы можете удалить его позже), импортировать внешнее сообщение, используя RDOMail.Import, перебрать вложения и использовать RDOAttachment.EmbeddedMsg (вернуть объект RDOMail).Затем вы можете скопировать это сообщение, используя RDOMail.CopyTo(), передавая только что созданный вами объект (mail) или целевую папку (RdoFolder).

...