Как открыть новое письмо с Lotus c # (.Net) - PullRequest
0 голосов
/ 11 февраля 2019

Я сейчас занимаюсь разработкой небольшого приложения на C #.Сеть позволяет выполнять разные задачи, но здесь в одной из моих задач я должен открыть новую почту по умолчанию от Lotus.Однако я не нахожу много документации по этому вопросу, поэтому я немного растерялся, и поэтому я в ваших руках: / Так что мне просто нужно иметь возможность открыть Lotus с новым электронным письмом по умолчанию.Заранее благодарен;)

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019
        public void ComposeMemo(String sendto, String subject, String body)
    {
        //BLOC1 instantiate a Notes session and workspace
        Type NotesSession = Type.GetTypeFromProgID("Notes.NotesSession");
         Type NotesUIWorkspace = Type.GetTypeFromProgID("Notes.NotesUIWorkspace");
         Object sess = Activator.CreateInstance(NotesSession);
         Object ws = Activator.CreateInstance(NotesUIWorkspace);

        //BLOC2 open current user's mail file
        String mailServer = (String)NotesSession.InvokeMember("GetEnvironmentString", BindingFlags.InvokeMethod, null, sess, new Object[] { "MailServer", true });
        String mailFile = (String)NotesSession.InvokeMember("GetEnvironmentString", BindingFlags.InvokeMethod, null, sess, new Object[] { "MailFile", true });
        NotesUIWorkspace.InvokeMember("OpenDatabase", BindingFlags.InvokeMethod, null, ws, new Object[] { mailServer, mailFile });
        Object uidb = NotesUIWorkspace.InvokeMember("GetCurrentDatabase", BindingFlags.InvokeMethod, null, ws, null);
        Object db = NotesUIWorkspace.InvokeMember("Database", BindingFlags.GetProperty, null, uidb, null);
        Type NotesDatabase = db.GetType();

        //BLOC3 compose a new memo
        Object uidoc = NotesUIWorkspace.InvokeMember("ComposeDocument", BindingFlags.InvokeMethod, null, ws, new Object[] { mailServer, mailFile, "Memo", 0, 0, true });
        Type NotesUIDocument = uidoc.GetType();
        NotesUIDocument.InvokeMember("FieldSetText", BindingFlags.InvokeMethod, null, uidoc, new Object[] { "EnterSendTo", sendto });
        NotesUIDocument.InvokeMember("FieldSetText", BindingFlags.InvokeMethod, null, uidoc, new Object[] { "Subject", subject });
        NotesUIDocument.InvokeMember("FieldSetText", BindingFlags.InvokeMethod, null, uidoc, new Object[] { "Body", body });

        //BLOC4 bring the Notes window to the front
        String windowTitle = (String)NotesUIDocument.InvokeMember("WindowTitle", BindingFlags.GetProperty, null, uidoc, null);
        Interaction.AppActivate(windowTitle);
    }

BLOC1 выполняет, открывает приложение, но из BLOC2 приложение больше не отвечает, но я не знаю, почему, в BLOC4, слово Interaction не распознается

0 голосов
/ 11 февраля 2019

Я предлагаю вам использовать веб-драйвер селена для доступа к их веб-сайту и автоматически создать учетную запись электронной почты.

Манипулирование приложением само по себе может быть довольно сложным, вы можете использовать пакет Nugat Input Simulator Windows .NET для имитации ввода данных пользователем в приложение или записи непосредственно в память с помощью Windows API.

Я не думаю, что есть поддерживаемый способ сделать это Lotus.

Но если вы можете использовать Gmail, есть Gmail API https://developers.google.com/gmail/api/guides/ Используйте .NET httpClient для взаимодействия с ним.И создать учетную запись Gmail https://developers.google.com/admin-sdk/directory/v1/guides/manage-users

...