Но есть проблема, в организации настроено шифрование всех исходящих писем. (Если зайти в outlook в Сервис-Центр Управления безопасностью - Защита электронной почты, там включены галки Шифрование электронной почты). Для отправки на внешние адреса, в письме вручную, требуется это шифрование отключать.
Вопрос в том, как отключать данное шифрование с помощью макроса и потом снова включать.
Заранее спасибо. [moder]Оформите код тегами (кнопка #)[/moder]
Добрый день!
Я через vba в outlook отправляю письма, всё работает отлично.
Вот мой макрос: [vba]
Код
Set OutlookApp=CreateObject("Outlook.Application") Set SM=OutlookApp.CreateItem(olMailItem)
Но есть проблема, в организации настроено шифрование всех исходящих писем. (Если зайти в outlook в Сервис-Центр Управления безопасностью - Защита электронной почты, там включены галки Шифрование электронной почты). Для отправки на внешние адреса, в письме вручную, требуется это шифрование отключать.
Вопрос в том, как отключать данное шифрование с помощью макроса и потом снова включать.
Заранее спасибо. [moder]Оформите код тегами (кнопка #)[/moder]shtrih
Сообщение отредактировал shtrih - Четверг, 02.04.2015, 14:37
Нашёл в справке Microsoft Outlook код, позволяющий зашифровать сообщение и добавить цифровую подпись. Возможно, он имеет отношение к вопросу и наведет на нужную мысль.
[vba]
Код
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) If MsgBox("Add signature and encryption using the object model?", vbYesNo) = vbYes Then Const PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003" Dim oProp As Long oProp = CLng(Item.PropertyAccessor.GetProperty(PR_SECURITY_FLAGS)) ' You can use this to verify the property's flag compared to ' what was set in Outlook. Debug.Print "Original flag value is: " & oProp uFlags = 0 ulFlags = ulFlags Or &H1 ' Add the encrypted flag ulFlags = ulFlags Or &H2 ' Add the signed flag Item.PropertyAccessor.SetProperty PR_SECURITY_FLAGS, ulFlags Debug.Print "Updated flag value is: " & ulFlags End If End Sub
[/vba]
Нашёл в справке Microsoft Outlook код, позволяющий зашифровать сообщение и добавить цифровую подпись. Возможно, он имеет отношение к вопросу и наведет на нужную мысль.
[vba]
Код
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) If MsgBox("Add signature and encryption using the object model?", vbYesNo) = vbYes Then Const PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003" Dim oProp As Long oProp = CLng(Item.PropertyAccessor.GetProperty(PR_SECURITY_FLAGS)) ' You can use this to verify the property's flag compared to ' what was set in Outlook. Debug.Print "Original flag value is: " & oProp uFlags = 0 ulFlags = ulFlags Or &H1 ' Add the encrypted flag ulFlags = ulFlags Or &H2 ' Add the signed flag Item.PropertyAccessor.SetProperty PR_SECURITY_FLAGS, ulFlags Debug.Print "Updated flag value is: " & ulFlags End If End Sub
Const PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003" Dim oProp As Long oProp = CLng(SM.PropertyAccessor.GetProperty(PR_SECURITY_FLAGS)) Debug.Print "Original flag value is: " & oProp uFlags = 0 ulFlags = ulFlags Or &H2 ' Add the signed flag SM.PropertyAccessor.SetProperty PR_SECURITY_FLAGS, ulFlags
SM.Send
[/vba]
В данном случае письма, будут только подписываться, но не шифроваться.
Для понимания: ulFlags = ulFlags Or &H2 - что значит это выражение?
Я пробовал решить, чуть иначе, но так и не допелил (с помощью VBA не нажимать кнопку): Set oCBs = SM.GetInspector.CommandBars Set oDigSignctl = oCBs.item("Standard").Controls.Add(, 718, , , True) oDigSignctl.Enabled = False oDigSignctl.Execute
Const PR_SECURITY_FLAGS = "http://schemas.microsoft.com/mapi/proptag/0x6E010003" Dim oProp As Long oProp = CLng(SM.PropertyAccessor.GetProperty(PR_SECURITY_FLAGS)) Debug.Print "Original flag value is: " & oProp uFlags = 0 ulFlags = ulFlags Or &H2 ' Add the signed flag SM.PropertyAccessor.SetProperty PR_SECURITY_FLAGS, ulFlags
SM.Send
[/vba]
В данном случае письма, будут только подписываться, но не шифроваться.
Для понимания: ulFlags = ulFlags Or &H2 - что значит это выражение?
Я пробовал решить, чуть иначе, но так и не допелил (с помощью VBA не нажимать кнопку): Set oCBs = SM.GetInspector.CommandBars Set oDigSignctl = oCBs.item("Standard").Controls.Add(, 718, , , True) oDigSignctl.Enabled = False oDigSignctl.Execute
Для понимания: ulFlags = ulFlags Or &H2 - что значит это выражение?
1). &H - префикс для 16-ричного числа. 2). &H2 = 2 в десятичном исчислении. 3). Оператор OR по битам проверяет числа начиная с самого младшего разряда:
Для понимания: ulFlags = ulFlags Or &H2 - что значит это выражение?
1). &H - префикс для 16-ричного числа. 2). &H2 = 2 в десятичном исчислении. 3). Оператор OR по битам проверяет числа начиная с самого младшего разряда: