C #에서 Imap 액세스 [닫기]


112

C #에서 Imap 서버 (SSL 포함)에 액세스하는 기본 제공 방법이 있습니까? 아니면 좋은 무료 라이브러리가 있습니까?



7
아니. 게시 한 링크는 특히 Gmail 용 IMAP과 관련이 있습니다. 그러나이 게시물은 그렇지 않습니다.

72
질문을 중복으로 말하거나 표시 할 때 더주의하십시오. 나는 "중복 : [링크] 모든 곳에서보기 지겨워. 다른 링크는"복제 자 "가 같은 질문인지 아닌지 어쨌든 알고 싶어하는 것에 대답하지 못하는 경우가
— 많다

7
질문이 닫혀서 답으로 추가 할 수 없습니다. github.com/jstedfast/MailKit 이 좋은 옵션이고 활성 프로젝트 인 것 같습니다.
— Rory

4
유용한 질문을 건설적이지 않은 것으로 표시하는 것은 실제로 건설적이지 않습니다 ...
— Robert J

답변:


90

나는 한동안 IMAP 솔루션을 찾고 있었고 꽤 많이 시도한 후에 AE.Net.Mail을 사용 하겠습니다 .

코드 탭으로 이동하여 작은 '다운로드'아이콘을 클릭하여 코드를 다운로드 할 수 있습니다. 작성자가 미리 빌드 된 다운로드를 제공하지 않으므로 직접 컴파일해야합니다. (NuGet을 통해 얻을 수 있다고 믿습니다). bin / 폴더에 더 이상 .dll이 없습니다.

단점이라고 생각하는 문서는 없지만 소스 코드 (오픈 소스의 경우 예!)를 살펴보고 Intellisense를 사용하여이 문제를 해결할 수있었습니다. 아래 코드는 특히 Gmail의 IMAP 서버에 연결합니다.

// Connect to the IMAP server. The 'true' parameter specifies to use SSL
// which is important (for Gmail at least)
ImapClient ic = new ImapClient("imap.gmail.com", "name@gmail.com", "pass",
                ImapClient.AuthMethods.Login, 993, true);
// Select a mailbox. Case-insensitive
ic.SelectMailbox("INBOX");
Console.WriteLine(ic.GetMessageCount());
// Get the first *11* messages. 0 is the first message;
// and it also includes the 10th message, which is really the eleventh ;)
// MailMessage represents, well, a message in your mailbox
MailMessage[] mm = ic.GetMessages(0, 10);
foreach (MailMessage m in mm)
{
    Console.WriteLine(m.Subject);
}
// Probably wiser to use a using statement
ic.Dispose();

최신 버전과 더 나은 코드 예제를 보려면 Github 페이지를 확인하십시오 .


1
사실이되기 엔 너무 쉬워 보인다. 내가 확인해 볼게!
— bendr

4
@jase-당신이 맞아요! 문제가 정확히 무엇인지 모르겠지만 (속성 파일처럼 보입니까?) 모든 관련 파일을 새 클래스 프로젝트에 복사하여 컴파일 할 수있었습니다. 어떤 경우이든 라이브러리를 만들었으므로 프로젝트에 대한 .dll 참조로 추가 할 수 있습니다. dl.dropbox.com/u/8037514/AE.Net.Mail.zip 면책 조항과 마찬가지로 원본 프로젝트와 함께 제공되는 모든 보증 및 저작권과 함께 제공되며 폭발 등의 경우 책임을지지 않습니다. 운!
— Dominic K

4
+1 방금 VS2010에서 AE.Net.Mail 의 최신 커밋을 다운로드하고 컴파일 했는데 완벽하게 작동했습니다. 나는 한 많은 팁을위한 더 나은 ImapX보다 경험, 감사합니다. 여기 의 코드 는 나에게 좋은 출발점을 주었다.
— RedFilter 2011

8
사람들은 왜 이렇게 훌륭한 것을 작성하고 기본적으로 문서를 포함하지 않습니까? 이해가 안
— Simon_Weaver

2
작동하지만 최신 버전에서는 생성자가 다음과 같이 표시됩니다. ImapClient ic = new ImapClient ( "imap.gmail.com", "name@gmail.com", "pass", AuthMethods.Login, 993, true);
— Ogglas

34

일부 사용자에게 유용 할 수 있기를 바라며 내 이동을 확인해보십시오.

S22.Imap

.NET 용으로 훌륭하고 잘 문서화 된 몇 가지 IMAP 라이브러리가 있지만, 그들 중 어느 것도 상업적 용도는 말할 것도없고 개인적으로도 무료로 제공되지는 않습니다. 그리고 제가 찾은 대부분의 버려진 무료 대안에 만족하지 못했습니다.

S22.Imap은 IMAP IDLE 알림과 SSL 및 부분 메시지 가져 오기를 지원합니다. 문서 작성에 약간의 노력을 기울였습니다. 하고 최신 상태로 유지 . 왜냐하면 내가 찾은 프로젝트에서 문서는 종종 드물거나 존재하지 않았기 때문입니다.

시도해보고 문제가 발생하면 알려주세요!


먼저 AE.Net.Mail을 사용해 보았고 지금까지 필요한 문서와 기능 모두에서 S22.Imap이 더 나은 것으로 나타났습니다.
— angularsen 2013 년

S22.Imap의 컨셉이 마음에 들었습니다. 하지만 내가 놓친 것은 색인 또는 메시지 번호를 통해 액세스하는 것입니다.
— Tejasvi Hegde 2015

S22.Imap 300 건배. 실제 시나리오에서 간단하고 효율적이고 유용합니다. .Search () 내가 sbrilliant
— Vishnoo 레스

이 라이브러리를 사용하여 내 사서함을 IMAP과 동기화하려면 어떻게해야합니까?
— JackXandar

1
로그인을 시도 할 때 "NO [WEBALERT some url] Web login required"라는 메시지와 함께 InvalidCredentialsException이 발생하는 이유가 있습니까? Gmail 계정에서 IMAP이 활성화되어 있습니다. 아이디어?
— Auri Rahimzadeh

19

IMAP에 대한 .NET 프레임 워크 지원은 없습니다. 타사 구성 요소를 사용해야합니다.

https://www.limilabs.com/mail 을 사용 해보세요. 매우 저렴하고 사용하기 쉬우 며 SSL도 지원합니다.

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

    imap.SelectInbox();
    List<long> uids = imap.SearchFlag(Flag.Unseen);
    foreach (long uid in uids)
    {
        string eml = imap.GetMessageByUID(uid);
        IMail message = new MailBuilder()
            .CreateFromEml(eml);

        Console.WriteLine(message.Subject);
        Console.WriteLine(message.TextDataString);
    }
    imap.Close(true);
}

이것은 내가 만든 상업용 제품입니다.

https://www.limilabs.com/mail에서 다운로드 할 수 있습니다 .


3
다운로드하여 몇 분 만에 가동 및 실행되었습니다. :) Very nice
— Moulde

비밀번호를 전달하는 대신 oAuth 2를 사용하여 토큰 전달을 지원합니까?
— user1166905 2013-10-29


2
훌륭한 구성 요소, 매력처럼 작동합니다. 몇 주 동안 평가판 (거의 완전한 기능)을 테스트 한 후 라이센스를 구입했습니다.
— Alex

1
이것은 참으로 훌륭한 구성 요소입니다. 우리가 시도한 모든 오픈 소스와는 달리, 이것은 실제로 살아 있고 최신입니다 (저는 2016 년에이 글을 쓰고 있습니다). @PawelLesnikowski PS에 감사드립니다. 나는 어떤 식 으로든 제휴하지 않습니다.
— jazzcat

15

MailSystem.NET 에는 IMAP4에 대한 모든 요구 사항이 포함되어 있습니다. 무료이며 오픈 소스입니다.

(나는 프로젝트에 참여하고 있습니다)


2
프로젝트가 활성화되어 있습니까? 최신 버전 날짜 : 2009 년 12 월 14 일 월요일 오전 9:00
— Kiquenet 2010

1
대부분의 요구 사항이 이미 다루어 졌기 때문에 오늘 추가 할 기능이 많지 않습니다. 제출시 버그 수정 및 작은 개선 사항 만 커밋됩니다. 그러나 그다지 많지 않고 라이브러리는 매우 강력합니다.

4
이 프로젝트는 죽은 것 같습니다. 제대로 IMAP4와 함께 작동하지 않습니다, 더 업데이트하지 않고 저자의 어떤 답변
— 데니스 Vuyka

6
@alhambraeidos 및 @Denis가 정확합니다. 이 프로젝트는 사실상 죽었습니다. 샘플은 VS 2008 또는 2010에서 기본적으로 빌드되지 않습니다. 업 컨버전 한 다음 16 개의 참조 문제를 검토해야했습니다. 문서가 오래되었으며 CodePlex 페이지는 지난 1 년 동안의 문제 / 의견에 대해 답변이 없습니다. 포기하고 Mail.dll 구매를 끝냈습니다 (아니요, 저는 그들과 관련이 없습니다).
— sohtimsso1970

2
프로젝트가 꽤 죽은, IDLE가 작동하지 않습니다 제대로 mailsystem.codeplex.com/workitem/23586
— 그렉 딘

5

라이브러리를 사용해보십시오 : https://imapx.codeplex.com/

해당 라이브러리는 무료이며 오픈 소스이며 여기에 예제가 있습니다. https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox


참고 : imapx는 지원 IDLE하지 않는 것
— 그렉 딘

ImapX는 현재 IDLE 확장을 지원합니다.
— Pavel Azanov

내 경험상이 라이브러리는 AE.Net.Mail보다 훨씬 느립니다. 이건 말도 안되지만 경고합니다!
— Simon_Weaver

1
이 라이브러리에는 주요 버그 (v2.0.0.18)가 포함되어 있습니다.
— David

2

나는 그것을 직접 시도하지 않았지만 이것은 당신이 시도 할 수있는 무료 라이브러리입니다 (이 부분의 SSL 부분에 대해서는 잘 모르겠습니다).

http://www.codeproject.com/KB/IP/imaplibrary.aspx

또한 SSL에 대한 매개 변수가있는 xemail이 있습니다.

http://xemail-net.sourceforge.net/

[편집] 귀하 (또는 클라이언트)가 전문 메일 클라이언트를위한 돈이 있다면이 스레드에는 몇 가지 좋은 권장 사항이 있습니다.

이메일받은 편지함에 액세스하기위한 .NET 구성 요소 권장 사항


codeproject의 Imaplibrary는 내가 사용하고 있었지만 필요한 기능이 없습니다 Ill checkout xemail
— UnkwnTech

stackoverflow.com/questions/86553/… ,,이 오류가 발생합니다 : 페이지를 찾을 수 없음
— ,,,

링크를 변경했습니다. 알려 주셔서 감사합니다.
— Espo 2010

REE : 귀하의 답변에 codeproject.com/KB/IP/imaplibrary.aspx ; 꽤 멋지다. 지난주부터 이메일 클라이언트로 사용해 왔으며 문제가 없었습니다.
— βӔḺṪẶⱫŌŔ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.