2008-09-21 3 views
1

문서를 보내고 다시 보낼 때 Outlook에서 가져 오는 독립 실행 형 C# 데스크톱 응용 프로그램을 작업하고 있습니다. 응용 프로그램은 지정된 폴더에서 전자 메일을 가져 와서 처리 한 다음 보낸 사람 이름과 다른 내용을 데이터베이스에 저장합니다.Outlook 버전에서 "From"전자 메일 주소를 일관되게 검색합니다.

이것은 SenderEmailAddress 속성이있는 Outlook 2003 및 2007에서 잘 작동합니다. 그러나 Outlook 2000 및 XP에는이 속성이 없으며 [email protected]을 일관되게 반환하지 않습니다. 이 버전에 대한 지원을 제공하고 있습니다.

나는 Outlook Redemption이라고 불리는 라이브러리가 이것을 해결할 것이라는 것을 알았지 만 .NET에서 개발 중이며 정말로 고객 레지스트리에 쓰는 것을 피하고 싶다. 또한 MAPI33 주위의 .Net 래퍼를 찾았지만 여전히 지원되는지 여부는 포럼에서 분명하지 않습니다.

Redemption dll에 대한 .Net 대안 또는 Outlook 버전에서 일관되게 전자 메일 주소를 검색 할 수있는 방법에 대한 지침을 제공합니다.

많은 감사

AbsFabs

에필로그 : 이 기사 http://support.microsoft.com/kb/324530에서 솔루션을 사용하여 끝났다. 회신을 작성한 다음 작성된 메일 항목의 주소로 회신을 추출하는 것을 포함합니다. 그것은 인터넷을 통해 전송 된 이메일에 효과적이었고 현재 Exchange Server 테스트를 거치고 있습니다.

또한 내 여행에 이것을 발견했습니다 http://anoriginalidea.wordpress.com/2008/01/11/getting-the-smtp-email-address-of-an-exchange-sender-of-a-mailitem-from-outlook-in-vbnet-vsto/ 그것은 접촉과 관련이있는 것 같습니다. 기존 구현이 테스트를 통과하지 못하면 내 계획 B를 구성 할 수 있습니다. 의견을

감사

AbsFabs

내가 궁극적으로 구원를 사용하여 상처. 직업을위한 훌륭한 도구. 내 문제는 내 애플 리케이션이 설치되었을 때 DLL을 등록하는 데 있었다. 내 응용 프로그램이 dotnet으로 작성되었으므로 아무 것도 등록 할 필요가 없습니다. 레지스트리가없는 COM을 사용하여 dll 등록 문제를 해결할 수있었습니다.

많은 영감을 보내 주셔서 감사합니다.

+0

이 작업을 수행하는 Outlook 용 추가 기능을 만들려고하십니까? 또는이 작업을 수행하기 위해 독립 실행 형 콘솔/Windows 응용 프로그램을 만들고 있습니까? –

답변

1

C# 프로덕션 코드에서 Outlook Redemption 솔루션을 사용하고 있습니다. 아름답게 작동합니다. 메일 메시지 (IRDOMail)의 SenderID를 가져올 수 있으며 거기에서 IRDOSession 개체의 GetAddressEntryFromID() 메서드를 사용할 수 있습니다.

-1

나는 실제로 이것을 사용한 적이 없지만 Outlook Collaboration Data Objects (CDO)을 사용해 볼 수 있습니다. 이전에는 Outlook과 함께 설치할 수있는 추가 기능 이었지만 이제는 별도로 제공됩니다.

0

좋은 소식은 올바른 인터페이스를 추적하면서 올바르게 작동한다는 것입니다. 나쁜 소식은 2000 년과 XP는. NET 이전에 출시 되었기 때문에 .NET에서 지원이 거의 제대로 지원되지 않았으며 .NET에서만 작동하는 COM을 얻으려는 진정한 노력이 2003 년이었습니다.

이 버전 2000 및 XP 용 솔루션은 올바른 COM 인터페이스를 추적하고 스스로를 래핑하는 것으로 구성됩니다. 나는 Outlook의이 버전을 위해 많은 시간을해야하고 결코 귀엽지 않다. 행운을 빌어 요.

1

직장에서 비슷한 문제가 발생하는 동안 netMAPI 경로로 이동하기로 결정 했으므로 몇 가지 문제가있었습니다.

주요 문제는 MAPI가 자체 메모리를 관리한다는 것입니다. .NET에서 가끔씩 (우리는 사내 소프트웨어를 사용하는 약 300 명이 있습니다) 응용 프로그램이 충돌하여 Windows의 보고서 오류가 발생한다는 것을 의미합니다 '대화 상자보다는 우리 자신의 버그 추적 대화 상자를 사용하십시오. 이것은 서로 다른 메모리 힙을 덮어 쓰는 두 가지 때문입니다.

교환 서버를 사용해야하므로 VB6 앱에서 MAPI 코드를 작성하면 자체 메모리 공간이 생겨서 .NET 힙을 덮어 쓰지 않는 것으로 나타났습니다.

일을 처리하는 데 오랜 시간이 걸렸지 만 지금까지 아무런 문제가 없었으며 매일 수백 명의 이메일 (수천은 아닐지라도)이 직원들에 의해 매일 전송됩니다.

0

Redemption은 레지스트리에 설치하지 않고 사용할 수 있습니다. RedemptionLoader은 C#, VB.Net, Delphi 및 C++에서 사용할 수 있습니다.

//tell the app where the 32 and 64 bit dlls are located 
//by default, they are assumed to be in the same folder as the current assembly and be named 
//Redemption.dll and Redemption64.dll. 
//In that case, you do not need to set the two properties below 
RedemptionLoader.DllLocation64Bit = @"c:\SourceCode\Redemption\redemption64.dll"; 
RedemptionLoader.DllLocation32Bit = @"c:\SourceCode\Redemption\redemption.dll"; 
//Create a Redemption object and use it 
RDOSession session = RedemptionLoader.new_RDOSession(); 
session.Logon(Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);