웹 OutLook, POP으로 메일 서버 메일 수신

13611 단어

웹 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는 자체적으로 발송물을 가지고 있는 라이브러리로 다음 장이 있으면 작성자가 어떻게 메일을 보냈는지, 발송자 선택, 첨부 파일 등 일련의 조작을 포함한다.
 
알겠습니다. 여러분이 기대하는 원본 코드는 여기에서 다운로드할 수 있습니다.
 
다운로드 클릭

좋은 웹페이지 즐겨찾기