메일백업
This commit is contained in:
		
							
								
								
									
										206
									
								
								SubProject/FCM0000/Mail/fMailBackup.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								SubProject/FCM0000/Mail/fMailBackup.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,206 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.ComponentModel; | ||||
| using System.Data; | ||||
| using System.Drawing; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Windows.Forms; | ||||
| using NetOffice; | ||||
| using Outlook = NetOffice.OutlookApi; | ||||
| using NetOffice.OutlookApi.Enums; | ||||
| using NetOffice.OutlookApi; | ||||
|  | ||||
| namespace FCM0000.Mail | ||||
| { | ||||
|     public partial class fMailBackup : Form | ||||
|     { | ||||
|         public fMailBackup() | ||||
|         { | ||||
|             InitializeComponent(); | ||||
|             dateTimePicker1.Value = DateTime.Now.AddYears(-2); | ||||
|             dateTimePicker2.Value = DateTime.Now.AddYears(-1); | ||||
|         } | ||||
|  | ||||
|         int cntp = 0; | ||||
|         int cnte = 0; | ||||
|         int cntb = 0; | ||||
|         List<string> okfolder; | ||||
|         List<string> nofolder; | ||||
|         private void button1_Click(object sender, EventArgs e) | ||||
|         { | ||||
|             this.okfolder = new List<string>(); | ||||
|             this.nofolder = new List<string>(); | ||||
|  | ||||
|             textBox1.Text = textBox1.Text.Trim(); | ||||
|             textBox2.Text = textBox2.Text.Trim(); | ||||
|  | ||||
|             var buf1 = textBox1.Text.Split(','); | ||||
|             var buf2 = textBox2.Text.Split(','); | ||||
|             foreach(var item in buf1) | ||||
|             { | ||||
|                 if (string.IsNullOrEmpty(item)) continue; | ||||
|                 if(okfolder.IndexOf(item.ToLower()) == -1) okfolder.Add(item.ToLower()); | ||||
|             } | ||||
|             foreach (var item in buf2) | ||||
|             { | ||||
|                 if (string.IsNullOrEmpty(item)) continue; | ||||
|                 if (nofolder.IndexOf(item.ToLower()) == -1) nofolder.Add(item.ToLower()); | ||||
|             } | ||||
|  | ||||
|             if (FCOMMON.Util.MsgQ("진짜?") != DialogResult.Yes) return; | ||||
|             int cnt = 0; | ||||
|             var fd = new FolderBrowserDialog(); | ||||
|             fd.SelectedPath = this.textBox3.Text; | ||||
|             if (fd.ShowDialog() != DialogResult.OK) return; | ||||
|  | ||||
|             var path = fd.SelectedPath; | ||||
|  | ||||
|             cntp = 0; | ||||
|             cntb = 0; | ||||
|             cnte = 0; | ||||
|  | ||||
|             Outlook.Application oApp = new Outlook.Application(); | ||||
|             var oNS = oApp.GetNamespace("mapi"); | ||||
|             foreach (MAPIFolder folder in oNS.Folders) | ||||
|             { | ||||
|                 if (folder.DefaultItemType != OlItemType.olMailItem) continue; | ||||
|                 folderbak(path, folder); | ||||
|             } | ||||
|             this.button1.Text = "저장된 메일 " + cntb.ToString() + "건/" + cntp.ToString() + "건 처리"; | ||||
|             this.button1.Refresh(); | ||||
|             FCOMMON.Util.MsgI("백업 성공"); | ||||
|  | ||||
|  | ||||
|             //get first message | ||||
|  | ||||
|  | ||||
|             //var newmail = ol.CreateItem(OlItemType.olMailItem) as Outlook.MailItem; | ||||
|             //newmail.Display(); | ||||
|             //ol. | ||||
|  | ||||
|             //foreach (var to in tolist) | ||||
|             //{ | ||||
|             //    if (to.isEmpty()) continue; | ||||
|             //    var newMail = ol.CreateItem(OlItemType.olMailItem) as Outlook.MailItem; | ||||
|             //    newMail.Display(); | ||||
|             //    newMail.Subject = this.tbSubject.Text.Trim(); // dr.title; | ||||
|             //    newMail.To = to; | ||||
|             //    newMail.CC = tbCC.Text.Trim(); | ||||
|             //    newMail.BCC = tbBCC.Text.Trim(); | ||||
|             //    // newMail.BodyFormat = OlBodyFormat.olFormatHTML; | ||||
|             //    newMail.HTMLBody = this.tbBody.Html | ||||
|             //         .Replace("{USER}", FCOMMON.info.Login.nameK) | ||||
|             //         .Replace("{EUSER}", FCOMMON.info.Login.nameE) | ||||
|             //         .Replace("{EMAIL}", FCOMMON.info.Login.email) | ||||
|             //         .Replace("%7BEMAIL%7D", FCOMMON.info.Login.email) | ||||
|             //         .Replace("{HP}", FCOMMON.info.Login.hp) | ||||
|             //         .Replace("{TEL}", FCOMMON.info.Login.tel) | ||||
|             //         .Replace("{ITEM}", tbSubject.Text) + newMail.HTMLBody; | ||||
|  | ||||
|  | ||||
|  | ||||
|             //} | ||||
|         } | ||||
|  | ||||
|         void folderbak(string basepatth, MAPIFolder folder) | ||||
|         { | ||||
|             if (folder.Folders.Count > 0) | ||||
|             { | ||||
|                 foreach (var fold in folder.Folders) | ||||
|                 { | ||||
|                     folderbak(basepatth, fold); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 //폴더명이 지정되었다면 그곳에 포함되어있는지 체크한다. | ||||
|                 if(okfolder.Count > 0) | ||||
|                 { | ||||
|                     if (okfolder.Contains(folder.Name.ToLower()) == false) | ||||
|                     { | ||||
|                         return; | ||||
|                     } | ||||
|  | ||||
|                 } | ||||
|                 if(nofolder.Count > 0) | ||||
|                 { | ||||
|                     if (nofolder.Contains(folder.Name.ToLower()) == true) | ||||
|                     { | ||||
|                         return; | ||||
|                     } | ||||
|                 } | ||||
|                 var oItems = folder.Items; | ||||
|                 var path = basepatth;// + "\\" + folder.FolderPath.Replace(@"\\", ""); | ||||
|                 foreach (object miitem in oItems) | ||||
|                 { | ||||
|                     var mi = miitem as MailItem; | ||||
|                     if (mi == null) continue; | ||||
|  | ||||
|                     cntp += 1; | ||||
|  | ||||
|                     if (cntp % 10 == 0) | ||||
|                     { | ||||
|                         this.button1.Text = "저장된 메일 " + cntb.ToString() + "건/" + cntp.ToString() + "건 처리"; | ||||
|                         this.button1.Refresh(); | ||||
|                     } | ||||
|  | ||||
|                     if (mi.Subject.StartsWith("회수:")) continue; | ||||
|                     //var mailitem = oItems.GetFirst() as Outlook.MailItem; | ||||
|  | ||||
|                     //var nowitem = ol.ActiveInspector(); | ||||
|                     //var mailitem = nowitem.CurrentItem as Outlook.MailItem; | ||||
|  | ||||
|                     var sd = DateTime.Parse(dateTimePicker1.Value.ToString("yyyy-MM-dd 00:00:00")); | ||||
|                     var ed = DateTime.Parse(dateTimePicker2.Value.ToString("yyyy-MM-dd 23:59:59")); | ||||
|  | ||||
|                     //기간을 벗어나면 처리하지 않음 | ||||
|                     if (mi.CreationTime < sd || mi.CreationTime > ed) continue; | ||||
|  | ||||
|  | ||||
|                     var subject = mi.Subject.Replace("\t", "").Replace("\r", "").Replace("\n", "").Replace("!", "").Replace("*", "").Replace("\"", "").Replace("@", "").Replace("#", "").Replace("^", "").Replace("&", "").Replace(">", "").Replace("<", "").Replace("/", "").Replace(":", "").Replace(" ", "").Replace("\\", "").Replace("?", "").Replace("%", "").Replace("_", "").Replace(".", ""); | ||||
|                     var filename = textBox4.Text.Trim(); | ||||
|                     filename = filename.Replace("{yyyy}", mi.CreationTime.Year.ToString("0000")); | ||||
|                     filename = filename.Replace("{mm}", mi.CreationTime.Month.ToString("00")); | ||||
|                     filename = filename.Replace("{dd}", mi.CreationTime.Day.ToString("00")); | ||||
|                     filename = filename.Replace("{datetime}", mi.CreationTime.ToString("yyyyMMddHHmmss")); | ||||
|  | ||||
|                     filename = filename.Replace("{sender}", mi.SentOnBehalfOfName); | ||||
|                     filename = filename.Replace("{subject}", subject); | ||||
|                     filename = filename.Replace("{messageid}", mi.ConversationID); | ||||
|                     filename = filename.Replace("{folder}", folder.FolderPath.Replace(@"\\", "")); | ||||
|  | ||||
|  | ||||
|  | ||||
|                     //filename = string.Format("{0}\\{1}\\{2}_{5}_{6}_{3}.msg", | ||||
|                     //    mi.CreationTime.Year.ToString("000"), | ||||
|                     //    mi.CreationTime.Month.ToString("00"), | ||||
|                     //    mi.CreationTime.Day.ToString("00"), | ||||
|                     //    mi.CreationTime.ToString("yyyyMMddHHmmss"), | ||||
|                     //    mi.ConversationID, | ||||
|                     //    mi.SentOnBehalfOfName, | ||||
|                     //    mi.Subject.Replace("\t", "").Replace("\r", "").Replace("\n", "").Replace("!", "").Replace("*", "").Replace("\"", "").Replace("@", "").Replace("#", "").Replace("^", "").Replace("&", "").Replace(">", "").Replace("<", "").Replace("/", "").Replace(":", "").Replace(" ", "").Replace("\\", "").Replace("?", "").Replace("%", "").Replace("_", "").Replace(".", "")); | ||||
|  | ||||
|                     var finame = System.IO.Path.Combine(path, filename); | ||||
|                     var fi = new System.IO.FileInfo(finame); | ||||
|                     if (fi.Directory.Exists == false) fi.Directory.Create(); | ||||
|                     if ( checkBox1.Checked || fi.Exists == false) | ||||
|                     { | ||||
|  | ||||
|                         try | ||||
|                         { | ||||
|                             cntb += 1; | ||||
|                             mi.SaveAs(fi.FullName); | ||||
|                         } | ||||
|                         catch (System.Exception ex) | ||||
|                         { | ||||
|                             Console.WriteLine("mail save err:" + ex.Message); | ||||
|                         } | ||||
|  | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 chi
					chi