웹 OutLook, POP으로 메일 서버 메일 수신
웹 OutLook, POP으로 메일 서버 메일 수신
웹 버전의 OutLook을 만들고 싶어서 이런 생각이 생겼어요. 사실 예전에도 이런 걸 접했어요.그래서 인터넷에서 찾았어요. 온 하늘에 Jmail이 받아요. 그래요. 다들 사용하고 있으니까 다운로드해 볼게요.
뭐야, 왜 자꾸 잘못 보고해?원래는 해독판을 찾아야 한다는 것을 발견했고 XXX는 Jmail4.4의 해독판을 찾았는데 드디어 본론으로 들어가려고 한다. 보기에 매우 간단하다. 문서에 따라 코드를 두드리고 인터럽트 운행을 해 보았다.어머!정말 됐어. 점차적으로 끊어져서 계속 추적해. 나 X, 어떻게 제목이 다 엉망이야.뒤에 팝 프로토콜을 찾아서 봤는데 인코딩 문제 때문이었어요.
그래, 인코딩이면 인코딩할 수 있겠지. JMail에서 메일 원본을 얻은 후에 와서 인코딩을 해독하자..........................고통스럽고 긴 과정, 결국 실패했다. 그 이유는 자세히 말하지 않겠다. 어쨌든 최종적으로 나오는 효과는 문제가 있다. 내용은 인코딩이 엉망이 되고, 첨부 파일은 비어 있고, 내장된 그림은 표시되지 않는 등 여러 가지 문제가 있다.
그래, 형이 다른 방법을 찾으려고 고집을 부리다가 결국'신기'[Aspose. Network]를 발견했다. 이것은 비용을 내야 하는 것이다. 오랫동안 찾아서 사용할 수 있는 버전을 찾았다. 이 구성 요소는 매우 많은 기능을 통합했다. 현재의 새 버전은 메일을 단독으로 벗긴 것 같지만 새 버전은 디코딩 문제가 있을 것 같아서 이것을 사용하자.
주: 이 글은 연습만 하고 사용합니다. 상업용도로 사용하지 마십시오.
사실 메일 서버에 있는 메일 제목, 내용, 첨부 파일, 발송자 등을 받아야 하는데 이 구성 요소는 이미 제공되어 사용하기에 매우 편리하다.
그래, 다음은 구체적으로 어떻게 하는지 설명해 보자!
1. 연결 설정 1 // Pop3Client( POP, , , )
2 Pop3Client Pop3 = new Pop3Client(Request.Form["pop"], 110, Request.Form["user"], Request.Form["pass"]);
3 Pop3.Connect(true);//
2. 모든 메일을 가져와 훑어보고 상세한 정보를 얻는다 1 int MessageCount = Pop3.GetMessageCount();//
2
3 //
4 for (int i = 1; i <= MessageCount; i++)
5 {
6 Mail ModelMail = new Mail();//
7 //
8 MailMessage MailMsg = Pop3.FetchMessage(i);
9 string MessageID = Pop3.GetMessageUniqueId(i);// ID
10 ModelMail.Date = MailMsg.Date;//
11 ModelMail.Subject = MailMsg.Subject;//
12 ModelMail.Body = MailMsg.HtmlBody;//
13 for (int j = 0; j < MailMsg.To.Count; j++)//
14 {
15 ModelMail.To += MailMsg.To[j].Address + ";";
16 ModelMail.ToName += MailMsg.To[j].DisplayName + "<" + MailMsg.To[j].Address + ">";
17 }
18 for (int j = 0; j < MailMsg.CC.Count; j++)//
19 {
20 ModelMail.CC += MailMsg.CC[j].Address + ";";
21 ModelMail.CCName += MailMsg.CC[j].DisplayName + "<" + MailMsg.CC[j].Address + ">";
22 }
23 for (int j = 0; j < MailMsg.From.Count; j++)//
24 {
25 ModelMail.From += MailMsg.From[j].Address + ";";
26 ModelMail.FromName += MailMsg.From[j].DisplayName + "<" + MailMsg.From[j].Address + ">";
27 }
28 AttachmentCollection Att = MailMsg.Attachments;//
29 string path = string.Empty;
30 foreach (var list in Att)
31 {
32 path = Server.MapPath("/Att/" + MessageID + "/");
33 if (!System.IO.Directory.Exists(path))
34 {
35 Directory.CreateDirectory(path);
36 }
37 list.Save(path + list.Name);
38 ModelMail.Att += list.Name + ";";
39 }
40 LinkedResourceCollection MailLink = MailMsg.LinkedResources;//
41 foreach (var list in MailLink)
42 {
43 if (string.IsNullOrEmpty(list.Name))
44 continue;
45 string ContentId = list.ContentId;
46 path = Server.MapPath("/Att/" + MessageID + "/");
47 if (!System.IO.Directory.Exists(path))
48 {
49 Directory.CreateDirectory(path);
50 }
51 list.Save(path + list.Name);
52 ModelMail.Body = ModelMail.Body.Replace("cid:" + ContentId, "/Att/" + MessageID + "/" + list.Name);//
53 }
54 ListMail.Add(ModelMail);
55 //
56 //Pop3.DeleteMessage(i);
57 }
58 //
59 Pop3.Disconnect();
사실 이렇게 많은 코드만 있으면 모든 기능을 실현할 수 있다. 메일을 가져온 후에 메일 서버의 메일을 삭제할 수 있다(OutLook 등은 모두 이렇게 조작한다). 그리고 당신의 로컬 데이터베이스에 저장할 수 있다. 일련의 조작을 하면 OutLook과 다를 것이 없다.NET는 자체적으로 발송물을 가지고 있는 라이브러리로 다음 장이 있으면 작성자가 어떻게 메일을 보냈는지, 발송자 선택, 첨부 파일 등 일련의 조작을 포함한다.
알겠습니다. 여러분이 기대하는 원본 코드는 여기에서 다운로드할 수 있습니다.
다운로드 클릭
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
1 // Pop3Client( POP, , , )
2 Pop3Client Pop3 = new Pop3Client(Request.Form["pop"], 110, Request.Form["user"], Request.Form["pass"]);
3 Pop3.Connect(true);//
2. 모든 메일을 가져와 훑어보고 상세한 정보를 얻는다 1 int MessageCount = Pop3.GetMessageCount();//
2
3 //
4 for (int i = 1; i <= MessageCount; i++)
5 {
6 Mail ModelMail = new Mail();//
7 //
8 MailMessage MailMsg = Pop3.FetchMessage(i);
9 string MessageID = Pop3.GetMessageUniqueId(i);// ID
10 ModelMail.Date = MailMsg.Date;//
11 ModelMail.Subject = MailMsg.Subject;//
12 ModelMail.Body = MailMsg.HtmlBody;//
13 for (int j = 0; j < MailMsg.To.Count; j++)//
14 {
15 ModelMail.To += MailMsg.To[j].Address + ";";
16 ModelMail.ToName += MailMsg.To[j].DisplayName + "<" + MailMsg.To[j].Address + ">";
17 }
18 for (int j = 0; j < MailMsg.CC.Count; j++)//
19 {
20 ModelMail.CC += MailMsg.CC[j].Address + ";";
21 ModelMail.CCName += MailMsg.CC[j].DisplayName + "<" + MailMsg.CC[j].Address + ">";
22 }
23 for (int j = 0; j < MailMsg.From.Count; j++)//
24 {
25 ModelMail.From += MailMsg.From[j].Address + ";";
26 ModelMail.FromName += MailMsg.From[j].DisplayName + "<" + MailMsg.From[j].Address + ">";
27 }
28 AttachmentCollection Att = MailMsg.Attachments;//
29 string path = string.Empty;
30 foreach (var list in Att)
31 {
32 path = Server.MapPath("/Att/" + MessageID + "/");
33 if (!System.IO.Directory.Exists(path))
34 {
35 Directory.CreateDirectory(path);
36 }
37 list.Save(path + list.Name);
38 ModelMail.Att += list.Name + ";";
39 }
40 LinkedResourceCollection MailLink = MailMsg.LinkedResources;//
41 foreach (var list in MailLink)
42 {
43 if (string.IsNullOrEmpty(list.Name))
44 continue;
45 string ContentId = list.ContentId;
46 path = Server.MapPath("/Att/" + MessageID + "/");
47 if (!System.IO.Directory.Exists(path))
48 {
49 Directory.CreateDirectory(path);
50 }
51 list.Save(path + list.Name);
52 ModelMail.Body = ModelMail.Body.Replace("cid:" + ContentId, "/Att/" + MessageID + "/" + list.Name);//
53 }
54 ListMail.Add(ModelMail);
55 //
56 //Pop3.DeleteMessage(i);
57 }
58 //
59 Pop3.Disconnect();
사실 이렇게 많은 코드만 있으면 모든 기능을 실현할 수 있다. 메일을 가져온 후에 메일 서버의 메일을 삭제할 수 있다(OutLook 등은 모두 이렇게 조작한다). 그리고 당신의 로컬 데이터베이스에 저장할 수 있다. 일련의 조작을 하면 OutLook과 다를 것이 없다.NET는 자체적으로 발송물을 가지고 있는 라이브러리로 다음 장이 있으면 작성자가 어떻게 메일을 보냈는지, 발송자 선택, 첨부 파일 등 일련의 조작을 포함한다.
알겠습니다. 여러분이 기대하는 원본 코드는 여기에서 다운로드할 수 있습니다.
다운로드 클릭
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
1 int MessageCount = Pop3.GetMessageCount();//
2
3 //
4 for (int i = 1; i <= MessageCount; i++)
5 {
6 Mail ModelMail = new Mail();//
7 //
8 MailMessage MailMsg = Pop3.FetchMessage(i);
9 string MessageID = Pop3.GetMessageUniqueId(i);// ID
10 ModelMail.Date = MailMsg.Date;//
11 ModelMail.Subject = MailMsg.Subject;//
12 ModelMail.Body = MailMsg.HtmlBody;//
13 for (int j = 0; j < MailMsg.To.Count; j++)//
14 {
15 ModelMail.To += MailMsg.To[j].Address + ";";
16 ModelMail.ToName += MailMsg.To[j].DisplayName + "<" + MailMsg.To[j].Address + ">";
17 }
18 for (int j = 0; j < MailMsg.CC.Count; j++)//
19 {
20 ModelMail.CC += MailMsg.CC[j].Address + ";";
21 ModelMail.CCName += MailMsg.CC[j].DisplayName + "<" + MailMsg.CC[j].Address + ">";
22 }
23 for (int j = 0; j < MailMsg.From.Count; j++)//
24 {
25 ModelMail.From += MailMsg.From[j].Address + ";";
26 ModelMail.FromName += MailMsg.From[j].DisplayName + "<" + MailMsg.From[j].Address + ">";
27 }
28 AttachmentCollection Att = MailMsg.Attachments;//
29 string path = string.Empty;
30 foreach (var list in Att)
31 {
32 path = Server.MapPath("/Att/" + MessageID + "/");
33 if (!System.IO.Directory.Exists(path))
34 {
35 Directory.CreateDirectory(path);
36 }
37 list.Save(path + list.Name);
38 ModelMail.Att += list.Name + ";";
39 }
40 LinkedResourceCollection MailLink = MailMsg.LinkedResources;//
41 foreach (var list in MailLink)
42 {
43 if (string.IsNullOrEmpty(list.Name))
44 continue;
45 string ContentId = list.ContentId;
46 path = Server.MapPath("/Att/" + MessageID + "/");
47 if (!System.IO.Directory.Exists(path))
48 {
49 Directory.CreateDirectory(path);
50 }
51 list.Save(path + list.Name);
52 ModelMail.Body = ModelMail.Body.Replace("cid:" + ContentId, "/Att/" + MessageID + "/" + list.Name);//
53 }
54 ListMail.Add(ModelMail);
55 //
56 //Pop3.DeleteMessage(i);
57 }
58 //
59 Pop3.Disconnect();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.