Управление кнопками шифрования и цифровой подписи в Outlook 2007 или более поздней версии - PullRequest
5 голосов
/ 22 июля 2011

Я работаю над небольшим скриптом в VBA, который позволил бы мне автоматически пересылать сообщения, в том числе зашифрованные.

Единственная проблема, с которой я столкнулся, - это программное удаление шифрования.

Iдумал, что смогу сделать это так:

  • Откройте сообщение
  • , снимите флажок Параметры шифрования и подписи
  • Переслать сообщение

СПри таком подходе я не знаю, как получить ссылку на кнопки «Шифровать и подписать».

Вот код, который работает для стандартных незашифрованных писем.Я установил этот метод как «Правило электронной почты» для всех входящих писем:

Sub test_macro(MyMail As MailItem)
    MyMail.Display
    'Need some API here to access the decrypt button    


    MyMail.Recipients.Add "otheraddress@company.com"
    MyMail.Recipients.Add "otheraddress2@company.com"
    Item_Send (MyMail)


End Sub

Фон

Здесь необходимо переадресовывать все входящие сообщения на адрес отделадля определенных людей.Пересылка их в зашифрованном виде вызывает всевозможные проблемы с сертификатами между различными версиями Outlook (2003/2007/2010 / и т. Д.), Поскольку все они должны иметь закрытый ключ адреса отдела и, похоже, конфликтуют с их личным сертификатом учетной записи (я получаю всесвоего рода ошибочное поведение, иногда это работает, иногда нет).

Альтернативные подходы

  • Я понимаю, что из-за ограничений безопасности текущий подход будетвероятно, не работает, поэтому я ищу альтернативы.Может быть, если я создам плагин для Outlook, это даст мне доступ к некоторому API безопасности для расшифровки входящих сообщений?

  • Создать POP-клиент, получить, вручную расшифровать сообщения и переслать его.Это, вероятно, самый сложный подход, поскольку существует множество форматов / алгоритмов шифрования, которые Outlookks поддерживает по умолчанию.

Есть еще идеи?Спасибо!

Ответы [ 3 ]

3 голосов
/ 27 сентября 2014

Я знаю, что это более старая тема, но для тех, кто интересуется, правильный способ программно переключать (включать или отключать) знак и программно переключать шифрование (а также проверять подпись и шифрование) показан в статье VBA, на которую ссылаются ниже.Это также можно сделать в .NET с небольшими изменениями

https://support2.microsoft.com/kb/2636465?wa=wsignin1.0

Например, следующую функцию C # .NET можно использовать в Outlook 2007, 2010, 2013 для программной проверки, еслиЭлемент электронной почты зашифрован:

public static bool isEmailEncrypted(ref Outlook.MailItem mItem) {
        bool retVal = false;
        string PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003";
        long flags = (long)mItem.PropertyAccessor.GetProperty(PR_SECURITY_FLAGS);
        //need to do bitwise AND operation
        long bitwiseAND = flags & 1; //encrypted bit is the first bit
        if (bitwiseAND == 1) {
            retVal = true;
        }
        return retVal;
    }
0 голосов
/ 26 августа 2011

В итоге я создал почтовый клиент IMAP, используя отличную библиотеку Mail.dll . Я очень рекомендую это для электронной почты - отличная документация, отличная поддержка!

0 голосов
/ 04 августа 2011

Сначала я подумал, что это должен быть метод в объекте MailItem, но функции MailItem.Encrypt () нет.

Потребовалось некоторое время, чтобы найти: http://support.microsoft.com/?kbid=279013

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

...