2009-08-07 2 views
2

내가 전자 메일 주소로 전송 된 전자 메일을하고 전자 메일의 내용을 처리하는 서비스의 일종 만드는 임무를 봤는데 (바이너리 첨부 파일을 포함하여.).NET 코드를 실행하고 전자 메일을 수신 할 때 처리 할 수있는 방법은 무엇입니까?

내가있어 이 서비스를 실행할 서버 (Windows Server 2008)에 대한 전체 액세스 권한을 가지며 .NET Framework (3.5)를 사용하여 솔루션을 코딩하기로 결정했습니다.

이제는 내가 할 수있는 여러 가지 방법에 대해 생각하고 있습니다. 프로그래밍 방식으로 전자 메일을 처리하는 데 익숙하지 않았기 때문에 처음으로 들어온 첫 번째 솔루션은 들어오는 전자 메일에 대해 기존 전자 메일 서버를 주기적으로 폴링하는 전자 메일 클라이언트를 만드는 것이 었습니다 (POP3 프로토콜 사용).) 그들을 처리하십시오. 그러나 그것을 할 수있는 다른 방법이 있습니다.

IMAP를 사용하여 메일 서버에 연결되어 있고 이메일이 도착하자마자 가져올 수 있습니다 (응답 성이 좋지만 IMAP 프로토콜을 구현하는 것이 더 어렵다고 생각합니다). 다음 질문은 다음과 같습니다. : POP3 또는 IMAP 프로토콜을 지원하는 신뢰할 수있는 전자 메일 라이브러리는 어디에서 찾을 수 있습니까?

또 다른 방법은 전자 메일 서버가 특정 주소로 보낸 전자 메일을 이진 코드로 직접 파이프하도록 구성 할 수 있습니다 (Linux 서버에서이 작업을 수행 한 것으로 나타났습니다). 하지만 이것에 대해서.

마지막으로 전자 메일을 직접 처리하는 자체 주소에 더미 전자 메일 서버를 만드는 것이 좋지만 나에게 이것은 나쁜 생각 인 것 같습니다.

누구나이 분야에서 경험이 있습니까? 티켓 지원 시스템 용 전자 메일 처리기를 작성해야한다는 것은 드문 일이 아니며, 첨부 파일을 처리하는 것 외에도 필요한 모든 것이 있다고 생각합니다.

힌트와 도움말에 감사드립니다.

+0

에서 다운로드 할 수 있습니다 이걸 발견했습니다. 나는 대안들에 대해 매우 감사 할 것입니다. – Blixt

+0

가능한 복제본 http://stackoverflow.com/questions/1950835/coding-for-how-to-receive-a-mail-in-windows-apllication –

+0

게시물의 사본이 이보다 5 개월 늦은 지? 어떤 게시물이라면 다음과 같습니다. http://stackoverflow.com/questions/18006/recommendations-for-a-net-component-to-access-an-email-inbox - 향후 독자에게 도움이된다면 이 게시물, 나는 AfterLogic (www.afterlogic.com)에 의해 MailBee.NET IMAP을 사용하여 종료했습니다. – Blixt

답변

2

많은 것들과 마찬가지로 - 의존적입니다. 다음과 같은 질문을 자신에게 물어 :

  1. 무엇을 당신의 대기 시간 요구 사항은 - 당신은 가능한 한 빨리 들어오는 메시지를 처리해야합니까, 또는 처리를 일괄 처리 할 수 ​​있는가? 일괄 처리가 가능한 경우 "받은 편지함"을 얼마나 자주 처리해야합니까?

  2. 처리량 요구 사항은 무엇입니까? 얼마나 많은 메시지가 여기에 분당으로 나옵니까? 메시지가 얼마나 큽니까? 이는 일괄 처리 시나리오를 사용하는 경우 폴링 간격에 대한 결정에 영향을 미칩니다.

  3. 어떤 종류의 전자 메일 시스템을 통합하고 있습니까? Exchange의 경우 사서함에 액세스하기 위해 사용할 수있는 프로그래밍 방식 인터페이스는 무엇입니까?가장 최근 버전의 Exchange가 흥미롭게도 Exchange 서버의 사서함에 액세스하는 데 문제가있었습니다 (클라이언트 쪽 CDO COM 구성 요소를 사용해야했는데 이상적이지 않은데 보안 제한이있었습니다).

가장 간단한 방법은 POP3을 사용하여 사서함을 폴링하는 것입니다. 그러나 들어오는 메시지에 즉시 으로 응답해야하는 경우이 메시지는 자르지 않습니다.

가능한 한 을 쓰지 마십시오. SMTP 서비스는 수천 번 전에 작성되었으며 불필요한 작업을하고 보안 위협에 노출됩니다. 메시지에 즉시이 응답해야하는 경우 Sendmail 또는 Postfix의 인스턴스를 작성하여 작성한 프로세스를 생성하십시오. 당신은 POP3 솔루션을 갈 경우

후 "Reading Email using POP3 in C#"을 "Free POP3 .NET library?"관련 질문의 읽기 및 (당신이 것 같습니다).

+0

실제 대기 시간 요구 사항은 없습니다. 처리하는 것이 좋지만 가능한 많은 CPU 사용을 분산시키기 위해 도착합니다. 이것은 많은 처리량을 얻을 수있는 서버가 아닙니다. 몇 가지 사용량 스파이크가있을 것입니다 (이것은 콘테스트를위한 것입니다). 그러나 그 후에는 사용량이 상당히 낮을 것입니다. 메시지는 각각 최대 1MB (짧은 모바일 비디오 포함)입니다. 통합 할 전자 메일 시스템은 아직 결정되지 않았지만 Exchange가 될 것이라고는 생각하지 않습니다. 그리고 마지막으로 가능한 한 많은 코드를 재사용하여 라이브러리에 대한 포인터를 얻으려고합니다. – Blixt

0

저는 Exchange Server에 주기적으로 액세스하고 전자 메일을 처리하기 위해 C#과 함께 webdav를 사용했습니다.

이 방법은 상당히 효과적입니다. 필요하다면 다시 사용하는 것이 좋습니다.

0

http://www.quiksoft.com/의 .net 구성 요소 중 일부가 사용자의 요구 사항을 도움이 될 수 있습니다.

응용 프로그램은 POP3 메일 서버를 매 x 분마다 폴링하고 대기열의 메시지를 통해 작동하며 각 메일이 처리 될 때 삭제합니다.

QuikSoft 도구는 전자 메일을 구문 분석하여 각 메시지에서 콘텐츠를 가져 오는 방법을 제공합니다.

0

전자 메일을받는 것이 가장 어려운 부분은 아니며, 첨부 파일의 구문을 분석하고 추출하는 것이 가장 어렵습니다.

상업용 제품에 관심이있는 사람이 있다면 Mail.dll을 살펴보십시오. instant notifications에 대해 언급 한 IDLE 명령을 지원합니다.

using(Imap imap = new Imap()) 
{ 
    imap.Connect("imap.server.com"); 
    imap.Login("user", "password"); 

    imap.SelectInbox(); 
    List<long> uidList = imap.SearchFlag(Flag.Unseen); 
    foreach (long uid in uidList) 
    { 
     IMail mail = new MailBuilder() 
      .CreateFromEml(imap.GetMessageByUID(uid)); 
     Console.WriteLine(mail.Subject); 
    } 
    imap.Close(true); 
} 

이 제작 한 상용 제품이 있습니다 :

Mail.dll는 POP3, IMAP 클라이언트와 강력한 MIME 파서가 포함되어 있습니다. http://pop2ticket.codeplex.com/ 나는 시작점으로 사용하게 될 것 어떤 :

당신은 http://www.lesnikowski.com/mail

관련 문제