2010-08-11 5 views
2

У меня есть класс C#, который был написан для чтения электронных писем лотоса для любых вложений и сохранения его на локальном диске. Он отлично работает, когда я передаю «первый параметр методу GetDataBase и полный путь .nsf-файла моей локальной системы в качестве второго аргумента. Но, если я удалю «", и я укажу свое полное имя локальной системы в качестве первого аргумента, оно возвращает нулевое значение.Метод NotesSession.GetDataBase возвращает значение null

Не проблема с разрешениями? Если это так, он не должен работать, даже когда я передаю «» в качестве первого параметра. В противном случае, должны ли я иметь какие-либо другие разрешения на уровне системы/сервера? Пожалуйста, помогите мне в этом выпуске.

ответ

2

Наконец, я мог бы сделать это следующим образом. И я подумал о том, чтобы отправить его кому-то, по крайней мере, не потерпеть снова.

Следующий код предназначен для чтения вложения из электронных писем лотоса и сохранения его в физическом месте.

string lotusServerName = ConfigurationSettings.AppSettings ["Lotus_Server"]. ToString(); string lotusDBFilePath = ConfigurationSettings.AppSettings ["Lotus_DB_File_Path"]. ToString(); string password = ConfigurationSettings.AppSettings ["Password"]. ToString(); string sourceFolder = ConfigurationSettings.AppSettings ["Source_Folder"]. ToString(); string targetFolder = ConfigurationSettings.AppSettings ["Target_Folder"]. ToString(); string documentsFolder = ConfigurationSettings.AppSettings ["Documents_Folder"]. ToString();

 //Creating the notes session and passing password 
     NotesSession session = new NotesSession(); 
     session.Initialize(password); 

     //Getting the DB instance by passing the servername and path of the mail file. 
     //third param "false" will try to check the DB availability by opening the connection 
     //if it cannot open, then it returns null. 
     NotesDatabase NotesDb = session.GetDatabase(lotusServerName, lotusDBFilePath, false); 

     //Get the view of the source folder 
     NotesView inbox = NotesDb.GetView(sourceFolder); 

     //looping through each email/document and looking for the attachments 
     //if any attachments found, saving them to the given specified location 
     //moving the read mails to the target folder 
     NotesDocument docInbox = null; 
     int docCnt = inbox.EntryCount; 
     for (int currDoc = 0; currDoc < docCnt; currDoc++) { 
      docInbox = inbox.GetFirstDocument(); 
      object[] items = (object[])docInbox.Items; 
      foreach (NotesItem nItem in items) { 
       if (nItem.Name == "$FILE") { 
        NotesItem file = docInbox.GetFirstItem("$File"); 
        string fileName = ((object[])nItem.Values)[0].ToString(); 
        NotesEmbeddedObject attachfile = (NotesEmbeddedObject)docInbox.GetAttachment(fileName); 

        if (attachfile != null) { 
         attachfile.ExtractFile(documentsFolder + fileName); 
        } 
       } 
      } 
      docInbox.PutInFolder(targetFolder, true);//"true" creates the folder if it doesn't exists 
      docInbox.RemoveFromFolder(sourceFolder); 
     } 

     //releasing resources 
     if (session != null) 
      session = null; 
     if (NotesDb != null) 
      NotesDb = null; 
     if (inbox != null) 
      inbox = null; 
     if (docInbox != null) 
      docInbox = null; 

Ниже приведены значения, считанные из файла .config.

Приведенный выше код будет работать должным образом, если у лотоса настроек уже почтовый клиент в вашей системе, и вы можете получить доступ к почте с вашего почтового сервера. Вы не требуете никаких других превалий.

+0

\t <добавить ключ = "Lotus_Server" значение = "ServerName/DomainName" /> \t <добавить ключ = "Lotus_DB_File_Path" значение = "почты \ MailfileName.nsf" /> \t <добавить ключ = "Пароль "значение =" пароль "/> \t <добавить ключ =" Source_Folder»значение = "Личные"/> \t <добавить ключ = "target_folder" значение = "Personal1"/> \t <добавить ключ = "" значение Documents_Folder = "C: \ Temp2 \" /> Некоторые, как, эти настройки конфигурационного файла не были приняты в моем первом ответе. –

Смежные вопросы