2013-02-22 3 views
0

사용자가 Outlook에서 미리 채워진 새 메시지를 시작할 단추를 클릭 할 수있는 .NET 응용 프로그램이 있습니다. 이것은 하나의 사소한 예외를 제외하고는 대부분 잘 작동합니다. 사용자가 메시지를 보낼 때 Outlook을 열지 않은 경우 메시지는 실제로 기본 Outlook 응용 프로그램을 시작할 때까지 보낼 편지함으로 이동합니다. 그래야만 송수신이 실제로 발생하는 것 같습니다. 여기 Outlook이 닫힌 경우에도 Outlook MailItem 보내기

코드의 조각은 내가 만들 사용하고있는 MailItem :

Dim mailItem As Outlook.MailItem = Me.OutlookApplication.CreateItem(Outlook.OlItemType.olMailItem) 
mailItem.To = "[email protected]" 
mailItem.Subject = "Some Subject" 
mailItem.HTMLBody = "Some Text" 
mailItem.Display(False) 

나는뿐만 아니라 Outlook.Application에 대한 ItemSend 이벤트에 후크, 그래서 사용자가에서 Send을 클릭하면 것을 볼 수 있어요 MailItem, Outlook 성공적으로 이벤트를 발생시킵니다.

사용자가 메시지를 시작할 때 Outlook이 실행되고 있지 않으면 새 OUTLOOK.EXE 프로세스가 생성됩니다. 두 경우 모두 Outlook이 외부 응용 프로그램에 연결되어 있음을 나타내는 아이콘이 시스템 트레이에 나타납니다.

Interop을 사용하여 보내기/받기를 어떤 식 으로든 트리거 할 수 있으므로 사용자가 Outlook을 별도로 열지 않아도 메시지를 보낼 수 있습니까? 당신은/완료 수신 보내기까지 살아으로 Outlook.Application을 유지해야하므로

답변

1

시도는, 그 메시지 전송이 비동기 알아 두셔야합니다

Namespace.SendAndReceive

를 사용합니다.

+0

나는 그것을 시도했다. Outlook.Application에 대한 참조를 실제로 처리하지는 않지만 'ItemSend' 이벤트 핸들러가 끝나면 즉시 OUTLOOK.EXE 프로세스가 종료됩니다. 보내기/받기가 완료 될 때 내가들을 수있는 방법이 있습니까? 이벤트 처리기 스레드에서 30 초 정도 기다릴 수는 있지만 100 % 강력하지는 않습니다. – mclark1129

+0

Namespace.SyncObject 컬렉션을 사용하여 동기화를 시작할 수 있습니다. SyncObject는 SyncStart/SyncEnd 이벤트를 노출합니다. –

관련 문제