Я пытаюсь получить доступ к базе данных Lotus Domino. Можно ли это сделать с помощью C#? Есть ли там некоторые примеры, на которые я мог бы смотреть?Доступ к данным календаря Lotus Notes C#
ответ
Есть много примеров, просто попробуйте найти его. В этом примере вы можете начать:
//This DLL you've got to add under Project-> Add Reference --> COM Tab --> Lotus Domino Objects
//Standard Path for this DLL is: "C:\Program Files\Notes\domobj.tlb"
using Domino; //domobj.tlb*
...
try
{
//-------------------------------------------
//!!Important!!
//Before you start, you have to check 2 things
//1.) Lotus Notes has to run when you start this application
//2.)The files "notes.ini" and "user.id"
// has to be in the main Lotus Notes folder
//--------------------------------------------
//First, create a new Lotus Notes Session Object
Domino.NotesSession LNSession = new Domino.NotesSession();
//Next add a Database and a Document Object (not new)
Domino.NotesDatabase LNDatabase;
Domino.NotesDocument LNDocument;
//Initialize your Session with your Password
LNSession.Initialize("password");
//Connect to your Notes Server and the path of your
//.nsf File (in my case its in a subfolder 'mail').
LNDatabase = LNSession.GetDatabase("Notes-Server", "mail\\user.nsf", false);
//Create an in memory document in the server database
LNDocument = LNDatabase.CreateDocument();
//-------Assign Field Values-------
//Define Start&End Date+Time of your appointment
//Year, Month, Day, Hour, Minute and Second
System.DateTime StartDate = new DateTime(2008, 3, 19, 8, 2, 0);
System.DateTime EndDate = new DateTime(2008, 3, 19, 8, 5, 0);
//This Defines that it is an Calendar Entry
LNDocument.ReplaceItemValue("Form", "Appointment");
//Type of the appointment, means:
LNDocument.ReplaceItemValue("AppointmentType", "0");
//0 = Date, Appointment
//1 = Anniversary
//2 = All Day Event (Do Not Set Time Here!)
//3 = Meeting
//4 = Reminder
//5 = Date (Special, experimental!)
// Title of your entry
LNDocument.ReplaceItemValue("Subject", "hello world");
// Set Confidential Level (Public=1 or Private=0)
LNDocument.ReplaceItemValue("$PublicAccess","1");
//Add Start&End Time of your event
LNDocument.ReplaceItemValue("CALENDARDATETIME", StartDate);
LNDocument.ReplaceItemValue("StartDateTime", StartDate);
LNDocument.ReplaceItemValue("EndDateTime", EndDate);
LNDocument.ReplaceItemValue("StartDate", StartDate);
LNDocument.ReplaceItemValue("MeetingType", "1");
//Infos in The Body
LNDocument.ReplaceItemValue("Body", "Body Text Body Text ...");
//Add an alarm to your appointment
LNDocument.ReplaceItemValue("$Alarm", 1);
LNDocument.ReplaceItemValue("$AlarmDescription", "hello world (alarm)");
LNDocument.ReplaceItemValue("$AlarmMemoOptions", "");
//5 = Time (in minutes) before alarm goes on
LNDocument.ReplaceItemValue("$AlarmOffset", 5);
LNDocument.ReplaceItemValue("$AlarmSound", "tada");
LNDocument.ReplaceItemValue("$AlarmUnit", "M");
//This saves your Document in the Notes Calendar
LNDocument.ComputeWithForm(true, false);
LNDocument.Save(true, false, false);
//On success, you'll see an info message;
MessageBox.Show("Calendar Entry Successfully Added!", "Info",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception e1)
{
//On error you'll see an error message
MessageBox.Show(e1.Message);
}
...
Прежде всего, мои соболезнования в связи с выбором почтового сервера, на который вы наложили свою компанию.
Проблема в том, что на самом деле нет и хороших примеров. Существует лишь небольшое сообщество пользователей, которые все еще используют эту мертвую технологию.
Вот что я нашел:
Как облажался, как это звучит .. Открыть НФС файл в шестнадцатеричном редакторе - есть некоторые «хорошие» примеры, написанные на VB (или Лотос Script) там. o_O
Но насколько я могу судить (по крайней мере для себя), информация календаря не хранится в локальных файлах nsf. Проблемы, с которыми мы сталкиваемся:
- Что такое имя сервера/имя базы данных? Я могу найти около 10 различных IP-адресов domino-серверов, если я оглядеюсь по сторонам - могу ли я использовать только что-нибудь из них? Помогает ли знание SMTP-адреса?
- Какую строку передать в GetView? Я видел «Контакты» «Люди» «$ (Люди)», помещая что-то глупое там, возвращает null, есть ли где-нибудь список?
- Откуда у пользователя? В остальной части юниверса аутентификация использует имя пользователя и пароль. Почему API Notes не хочет знать имя пользователя?
Чтобы ответить на 1: Я думаю, что пустая строка как-то хватает правильный сервер от
бог реестра
знает где.
Еще одна возможность - попробовать это. В Lotus Notes есть стрелка вниз, которая расширяется, чтобы вы могли перейти к Mail, Calendar (и кучу другого дерьма, которого вы, вероятно, никогда не использовали). Щелкните правой кнопкой мыши «Календарь», затем перейдите в «Приложение»> «Свойства». Он отобразит сервер и имя файла. Удалите трейлинг/Garbage/Crap из имени сервера. Это даст имя сервера для функции ниже. Также удалите файл prefixing \ mail \ из имени файла, который предоставит базу данных для функции ниже.
Ответ 2: Я не нашел лучшего ответа, чем использовать редактор Hex или очистить Интернет от фрагментов кода. Я подозреваю, что эта строка задана не IBM, а во время установки. Поэтому, если бы мы могли найти значение по умолчанию, которое может работать *. Опять мне хотелось бы получить лучший ответ. Что работает для меня - это $ All for E-Mail (извините В примечаниях лотоса нет «писем» Lotus отправляет «Memos») и «Календарь для календаря».
Чтобы ответить 3: API Lotus Notes, как представляется, использует последний зарегистрированный пользователь для аутентификации следующего входа в систему пользователя. Пойдите, вероятно, потому, что Lotus настолько безопасна.
Следующая функция требует ссылки на dll Domino. Возможно, вам придется ссылаться на него, и если ваш на 64-битной системе все равно не будет работать. Скомпилируйте это в 32-битном режиме. Не забывайте, что Lotus Notes - это «приложение уровня предприятия» и светлые годы, за исключением того, что может сделать Outlook.Это вернет ряд пар ключ/значение. Да, вы это правильно поняли. Это все ключевые пары значений. Много 64-битных кодированных мусора, цветовых кодов, подсказок, казалось бы, случайных массивов «1» и другого бесполезного дерьма, к счастью, данные, которые вы хотите, имеют четкий текст.
using System;
using System.Linq;
using System.Data;
using System.Collections;
using System.Runtime.InteropServices;
using Microsoft.Win32;
using Domino;
using System.Text;
using System.IO;
using System.Collections.Generic;
namespace NotesScraper
{
public class NotesCommunication
{
public KeyValuePair<string, NotesViewResultSet[]>[] PullNotesView(string[] ViewNames, string server, string database, string password)
{
if (ViewNames == null || ViewNames.Length == 0 || ViewNames.ToList().Distinct().Count() != ViewNames.Length)
{
throw new ArgumentException();
}
else
{
List<KeyValuePair<string, NotesViewResultSet[]>> results = new List<KeyValuePair<string, NotesViewResultSet[]>>();
NotesSession notesSession = new Domino.NotesSession();
notesSession.Initialize(password);
NotesDatabase notesDatabase = notesSession.GetDatabase(server, database, false);
for(int i=0; i<ViewNames.Length; i++)
{
List<NotesViewResultSet> result = new List<NotesViewResultSet>();
Domino.NotesView notesView;
string view = ViewNames[i];
notesView = notesDatabase.GetView(view);
NotesViewEntryCollection notesViewCollection = notesView.AllEntries;
for (int rowCount = 1; rowCount <= notesViewCollection.Count; rowCount++)
{
NotesViewEntry viewEntry = notesViewCollection.GetNthEntry(rowCount);
NotesDocument document = viewEntry.Document;
Array notesThings = document.Items as Array;
for (int j = 0; j < notesThings.Length; j++)
{
NotesItem notesItem = (notesThings.GetValue(j) as Domino.NotesItem);
result.Add(new NotesViewResultSet()
{
RecordID = rowCount,
Name = notesItem.Name,
Value = notesItem.Text
});
}
}
results.Add(new KeyValuePair<string,NotesViewResultSet[]>(view, result.ToArray()));
}
return results.ToArray();
}
}
}
public class NotesViewResultSet
{
public int RecordID {get;set;}
public string Name { get; set; }
public string Value { get; set; }
}
}
Хотя ваш код содержит некоторые правильные точки, ваш ответ является чисто неправильным и показывает, что вы ничего не знаете о Lotus Domino/Notes. В реестре нет ничего, что могло бы помочь найти любую информацию о правильных серверах/путях. Пустая строка для сервера просто означает «local» (локальная реплика, если она у вас есть), а hex-редактор вообще не помогает в понимании структуры ... –
Никто не знает о Lotus Notes, это мертвая технология. Однако мой ответ является самым дальней, чем вам не придется платить сотрудникам IBM. Когда я говорю реестр, я имею в виду черный ящик, в котором есть примечания лотоса. И да, шестнадцатеричный редактор предоставит гораздо больше примеров, чем вы найдете в Интернете, по крайней мере, вы можете получить правильные строки для параметра GetView. –
Я рассмотрел ваши проблемы сейчас, пожалуйста, удалите свой эмоционально заряженный голос. Этот ответ стал лучшим и, вероятно, единственным решением в Интернете. –
- 1. Доступ к Lotus Notes Calendar через PHP?
- 2. Доступ к Lotus Notes через telnet
- 3. Проблема в Lotus Notes с записью календаря
- 4. Доступ к данным календаря Google
- 5. C# и Lotus Notes
- 6. Lotus Notes, Exchange и C#
- 7. Доступ к содержимому базы данных Lotus Notes без установленного программного обеспечения Lotus Notes
- 8. Ошибка Lotus Notes
- 9. Как получить доступ к папке «Контакты» в Lotus Notes с использованием Lotus Notes API Java
- 10. Интеграция Lotus Notes с C#
- 11. Lotus Notes C API Выпуск
- 12. Lotus Notes и C# SSO
- 13. Decrypt Lotus Notes NSF
- 14. Lotus Notes: не разрешен доступ к файлу свойств системы
- 15. Как получить данные календаря событий Lotus Notes с сервера Domino?
- 16. Элемент календаря из клиента Lotus Notes сохраняется как черновик
- 17. Lotus Notes создает открытие сеанса «Клиент Lotus Notes»
- 18. Доступ автора к сохранению и редактированию документа в Lotus Notes
- 19. Могу ли я получить доступ к базе данных Lotus Notes?
- 20. Как получить доступ к файлам WEB-INF в Lotus Notes?
- 21. Доступ к SQL-серверу через конструкторы Lotus Notes
- 22. Как получить доступ к базе данных Lotus Notes от PHP5
- 23. Lotus Notes - команда @FileDir
- 24. Lotus Notes LDAP Export
- 25. Типы Lotus Notes Document
- 26. Lotus Notes: RichText Item
- 27. Lotus Notes Ink Подпись
- 28. Создание плагина Lotus Notes для записей календаря через Java
- 29. Примечания Lotus Notes Script для множественного ввода календаря
- 30. Получить сегодняшние записи календаря в Lotus Notes с помощью Java
Благодарим за это. Но проблема в том, что у меня нет проблем с поиском примеров кода для добавления в Календарь. Но нет ли примера обсуждения, чтобы получить календарь из Lotus Notes ore Lotus Traveler? – mortenstarck
Используйте приведенный выше пример в качестве отправной точки для понимания того, как разговаривать с Lotus Notes на C#. Затем сопоставьте это с Lotus Notes API, который расскажет вам обо всех объектах, которые вы можете получить по адресу: http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=%2Fcom.ibm. designer.domino.main.doc% 2FH_USING_LOTUSSCRIPT_APIS.html –
Еще один совет - найти примеры того, что вы хотите делать на любом языке (Java, C API, LotusScript и т. д.), а затем использовать этот пример в качестве руководства по как сделать то же самое в C#. К сожалению, у меня нет конкретного примера того, как получить доступ к данным календаря. –