示例#1
0
        private IRDOFolder FindOrCreate(IRDOFolder root, string name, int defKind, bool isDefKindSet = true)
        {
            RDOFolder2 folder;

            try
            {
                folder = (isDefKindSet ? _session.GetDefaultFolder((rdoDefaultFolders)defKind) : root.Folders[name]) as RDOFolder2;
            }
            catch (Exception)
            {
                folder = root.Folders.Add(name) as RDOFolder2;
                if (isDefKindSet)
                {
                    folder?.SetAsDefaultFolder(defKind);
                }
            }
            if (folder == null)
            {
                folder = root.Folders.Add(name) as RDOFolder2;
                if (isDefKindSet)
                {
                    folder?.SetAsDefaultFolder(defKind);
                }
            }
            return(folder);
        }
示例#2
0
        private IRDOFolder GetFolderByNameOrCreate(IRDOFolder rootFolder, string name, bool isRoot = true)
        {
            if (!isRoot)
            {
                return(FindOrCreate(rootFolder, name, 0, false));
            }
            switch (name.ToLower())
            {
            case "inbox":
                return(FindOrCreate(rootFolder, "Skrzynka odbiorcza", (int)rdoDefaultFolders.olFolderInbox));

            case "trash":
                return(FindOrCreate(rootFolder, "Elementy usunięte", (int)rdoDefaultFolders.olFolderDeletedItems));

            case "sent":
                return(FindOrCreate(rootFolder, "Elementy wysłane", (int)rdoDefaultFolders.olFolderSentMail));

            case "junk":
                return(FindOrCreate(rootFolder, "Wiadomości-śmieci", (int)rdoDefaultFolders.olFolderJunk, false));

            case "archives":
                return(FindOrCreate(rootFolder, "Archiwum", (int)rdoDefaultFolders.olFolderArchive, false));

            case "drafts":
                return(FindOrCreate(rootFolder, "Wersje robocze", (int)rdoDefaultFolders.olFolderDrafts));

            case "unsent messages":
                return(FindOrCreate(rootFolder, "Skrzynka nadawcza", (int)rdoDefaultFolders.olFolderOutbox));

            default:
                return(FindOrCreate(rootFolder, name, 0, false));
            }
        }
示例#3
0
 private void ConvertFolder(string path, IRDOFolder rootFolder, bool isRoot = true)
 {
     foreach (var file in Directory.GetFiles(path))
     {
         if (Path.GetExtension(file) != "msf")
         {
             ReadFolder(file, GetFolderByNameOrCreate(rootFolder, Path.GetFileNameWithoutExtension(file), isRoot));
         }
     }
     foreach (var directory in Directory.GetDirectories(path))
     {
         var dirName = Path.GetFileName(directory);
         if (dirName?.Tail(4).ToLower() == ".sbd")
         {
             ConvertFolder(directory, GetFolderByNameOrCreate(rootFolder, dirName.Substring(0, dirName.Length - 4)), false);
         }
     }
 }
示例#4
0
 private void ReadFolder(string path, IRDOFolder folder)
 {
     if (folder == null)
     {
         return;
     }
     CurrentFile = path;
     using (var file = new StreamReader(path, Encoding.UTF8))
     {
         var    lines = new List <string>();
         string line;
         while ((line = file.ReadLine()) != null)
         {
             if (line.StartsWith("From - ") && lines.Any())
             {
                 SaveMessage(lines, folder);
                 lines.Clear();
             }
             lines.Add(line);
         }
     }
 }
示例#5
0
 private void ConvertFolder(string path, IRDOFolder rootFolder)
 {
     if (rootFolder == null)
     {
         return;
     }
     foreach (var directory in Directory.GetDirectories(path))
     {
         var folder = rootFolder.Folders.Add(Path.GetFileName(directory));
         if (folder != null)
         {
             foreach (var file in Directory.GetFiles(directory))
             {
                 CurrentFile = file;
                 var message = folder.Items.Add();
                 message.Import(file, 3);
                 message.Sent = true;
                 message.Save();
             }
         }
     }
 }
示例#6
0
        private static void SaveMessage([NotNull] IReadOnlyCollection <string> lines, [NotNull] IRDOFolder folder)
        {
            if (!lines.Any())
            {
                return;
            }
            var pathDir = Path.Combine(@"C:\Windows\Temp", folder.Name.TrimIllegalFromPath());

            if (!Directory.Exists(pathDir))
            {
                Directory.CreateDirectory(pathDir);
            }
            var pathMes = Path.Combine(pathDir, lines.First().TrimIllegalFromPath());

            File.WriteAllLines(pathMes, lines);
            var message = folder.Items.Add();

            message.Import(pathMes, 1024);
            message.Sent = folder.Name != "Wersje robocze";
            message.Save();
            File.Delete(pathMes);
        }