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.