2016-10-06 1 views
0

제대로 작동하지 않는 ItemSend 이벤트 처리기가있는 Outlook 2013 추가 기능이 있습니다. 그것은 무엇을Outlook 2013의 작성 모드에 표시된 보낸 편지함 폴더에 MailItems가 생성되는 이유

은 다음과 같습니다

  1. 루프 모든 수신자 (받는 사람, 참조, 숨은 참조)과받는 사람으로 해당 이메일을 각각 별도의 복사본을 생성하고 전송합니다. 그런 다음 보낸 메일 폴더에서 삭제합니다. 이것은 잘 작동합니다.

  2. 원본, 참조 및 숨은 참조 정보가있는 복사본이 하나 더 만들어집니다. 저장 방법은 보낼 편지함에 넣기 때문에 이동 방법을 사용하여 보낸 편지함 폴더로 이동합니다. 실제로 보내지 않아야합니다. 마치 정상적으로 보낸 것처럼 개인 복사본이어야합니다.

  3. 취소를 true로 설정하고 무시 문자로 검사기 창을 닫으므로 원본도 전송되지 않습니다. 이것도 작동합니다.

문제는 저장된 사본입니다. 열 때 작성 모드입니다. 기본적으로 초안과 동일합니다. 읽기 모드에서 보냈을 때처럼보고 싶습니다.

Sent-property가 어떤 모드를 표시할지 결정하지만 그 속성은 읽기 전용이며 SentOn은 null이며 모드가 올바르더라도 문제가 될 것이라고 읽었습니다. 이 주위에 어떤 방법이 있습니까?

실제로 보낸 편지함 폴더에서 다른 메일 중 하나를 가져 와서 내용을 편집하고 저장하려고했습니다. 그러나 동일한 결과가 발생합니다. 또한 MailItem에는 Sent = False 및 SentOn = null이 있습니다.

우리가 여전히 EventHandler를 실행 중이며 Outlook이 실제로 다른 스레드에서 전송한다고 생각하지 않기 때문에 Send-was가 호출 되더라도 아직 실제로 전송되지 않았기 때문일 수 있습니까?

어쨌든이 해결 방법은 작동하지 않는 것 같습니다.

이러한 종류의 기능을 구현하는 방법에 대한 아이디어가 있으십니까?

답변

0

낮음 (확장 MAPI) 수준에서 항목을 처음 저장하기 전에 (MAPI 제한) PR_MESSAGE_FLAGS 속성에서 MSGFLAG_UNSENT 비트를 제거 할 수 있습니다.

송신 된 상태로 생성 된 OOM 항목은 게시물 항목뿐입니다. 게시물 항목을 만들고 MessageClass 속성을 IPM.Note으로 다시 변경하고 저장하고 항목 ID를 기억하고 Marshal.ReleaseComObject (.Net의 경우)을 사용하여 게시물 항목을 해제 한 다음 Namespace.GetItemfromId을 사용하여 다시 열면 - 보낸 사람이 MailItem입니다. 상태. PR_ICON_INDEX 속성을 업데이트/삭제해야 아이콘이 올바른지 확인할 수 있습니다. Redemption를 사용하는 옵션이

경우 (이 저장 전) Sent 속성을 설정뿐만 아니라 SentOn/ReceivedTime/Sender/SentOnBehalfOf 등록 할 수 있습니다. 내 머리 위로 떨어져

는 :

RDOSession rdoSession = new RDOSession(); 
rdoSession.MAPIOBJECT = Globals.ThisAddIn.Application.Session.MAPIOBJECT; 
RDOFolder rdoFolder = rdoSession.GetDefaultFolder(rdoDefaultFolders.olFolderSentMail); 
RDOMail rdoItem = rdoInbox.Items.Add("IPM.Note"); 
rdoItem.Sent = true; 
rdoItem.Recipients.AddEx("Joe The User", "[email protected]", "SMTP"); 
rdoItem.Subject = "test"; 
rdoItem.Body = "test body"; 
rdoItem.UnRead = false; 
rdoItem.SentOn = rdoItem.ReceivedTime = new DateTime(2016, 10, 6, 8, 44, 0); 
rdoItem.Sender = rdoItem.SentOnBehalfOf = rdoSession.CurrentUser; 
rdoItem.Save(); 
+0

감사합니다, 나는 PostItem 트릭 것을 사용하고는했다. – SamiR

+0

이것에 대해 하나 더 질문드립니다. 메일 항목을 만들기 위해 포스트 트리를 만들고 저장합니다. 그런 다음 모든 필드, 제목, 본문,받는 사람, 등을 업데이트합니다. 그러나받는 사람 모음을 다시 작성하려면 어떻게해야합니까? .Add (받는 사람받는 사람) 메서드 만 있고 .Add (문자열 이름) 동일한 – SamiR

+0

개체 유형을 추가하고 싶습니다. 이름을 추가하거나 "받는 사람"및 "참조"필드에 추가 할 수 있지만 다른 종류의받는 사람 개체를 만들고 나중에는 명확하지는 않지만 오랫동안 Exchange 주소로 문제를 일으킬 수 있습니다. "o Organization , ou = Etc .... "주소 유형. – SamiR

관련 문제