2017-12-07 28 views
0

그래야 특정 Outlook 문자열을 찾는 Outlook 수신함을 통과하는 스크립트가 있습니다. 이것은 내받은 편지함에서 직접 이메일에 유용합니다. 이제 다른 이메일을 첨부 파일로 포함하는 이메일에이 감지 기능을 확장하려고합니다. 나는 이것을 연구하는 데 많은 시간을 할애했으며 이메일 첨부 파일에 직접 액세스하는 적절한 방법을 찾지 못하는 것 같습니다. 내가 한 일은 첨부 파일을 디스크에 저장 한 다음 CreateItemFromTemplate을 사용하여 다시 읽는 것입니다. 나는 이것을 cludge 해법으로 생각하며, 여기 누군가가 CreateAmpFromTemplate으로서 saveas를 우회하여 첨부 파일로부터 항목 객체를 직접 생성 할 수있는 좀 더 우아한 방법을 찾을 수 있기를 바랍니다. 여기 개념 스크립트의 증거 나는이 함께 넣어 것입니다 :전자 메일 첨부 파일을 개체로 액세스

당신은 혼자 OOM에서 할 수있는 최선입니다
Const olFolderInbox = 6 
Const olMail = 43 
Const olEmbeddeditem = 5 
Const PropName = "http://schemas.microsoft.com/mapi/proptag/0x007D001E" 

Set app = CreateObject("Outlook.Application") 
set objNamespace = app.GetNamespace("MAPI") 
set objInboxItems = objNameSpace.GetDefaultFolder(olFolderInbox).items 
wscript.echo "Have your inbox open checking for fish tests or emails as attachments" 
for each objItem in objInboxItems 
    if objItem.Class = olMail then 
     with objItem 
      strHeader = .PropertyAccessor.GetProperty(PropName) 
      iLoc1 = instr(1,strHeader,"X-Testing",1) 
      if iLoc1 > 0 then 
       wscript.echo "mytest. From: " & .Sender & " at: " & .ReceivedTime & " subjet: " & .Subject 
      end if 
      iLoc1 = instr(1,strHeader,"X-PHISHTEST",1) 
      if iLoc1 > 0 then 
       wscript.echo "Go Fish. From: " & .Sender & " at: " & .ReceivedTime & " subjet: " & .Subject 
      end if 
      if .attachments.count > 0 then 
       set objAttachment = .attachments.item(1) 
       if objAttachment.type = olEmbeddeditem then 
        wscript.echo "Has Attachment. From: " & .Sender & " at: " & .ReceivedTime & " subjet: " & .Subject 
        wscript.echo " - Filename: " & objAttachment.Filename 
        objAttachment.SaveAsFile ("c:\temp\TempEmail.msg") 
        set objExtMsg = app.CreateItemFromTemplate("c:\temp\TempEmail.msg") 
        strExtHeader = objExtMsg.PropertyAccessor.GetProperty(PropName) 
        iLoc1 = instr(1,strExtHeader,"X-Testing",1) 
        if iLoc1 > 0 then wscript.echo " ++ This is a plain test message" 
       end if 
      end if 
     end with 
    end if 
next 
wscript.echo "That's all folks" ` 
+0

* Attachment 개체는 CDO Rendering ObjectRenderer 개체를 사용하여 HTML 하이퍼 텍스트로 렌더링 할 수 있습니다. 이를 지정하려면 개체 렌더러의 DataSource 속성을 Attachment 개체 자체로 설정합니다. RenderProperty 메서드로 렌더링 할 수있는 개별 속성은 Attachment 개체 속성 설명에 나와 있습니다. * https://msdn.microsoft.com/en-us/library/ms526700(v=exchg.10).aspx – ACatInLove

+0

I 특별히 렌더링 된 객체를 원하지 않는다면 메시지가 렌더링되면 실제로 내 POC에 부정적인 영향을 미칩니다. 전자 메일 헤더에 액세스하여 특정 헤더가 있는지 여부를 확인하려면 메시지 자체 또는 첨부 된 전자 메일에 있는지 확인하십시오. – Siggi

+0

읽었습니까? 그것은 렌더링 할 데이터에 대한 액세스를 제공합니다. – ACatInLove

답변

0

- MSG 파일로 첨부 파일을 저장 한 다음 다시 엽니 다. OpenSharedItemCreateItemFromTemplate보다 MSG 파일을 여는 좋은 방법입니다.

확장 MAPI 수준 (C++ 또는 Delphi)에서 IAttach::OpenProperty을 사용하여 속성을 IMessage으로 열 수 있습니다. 확장 MAPI가 옵션이 아니면 Redemption (모든 언어) - Safe*ItemRDO 개체 군은 attachment 개체에 EmbeddedMsg 속성을 노출합니다.

+0

감사합니다. openshareditem에 대한 확인과 팁에 감사드립니다. – Siggi