2011-07-21 13 views
5

Estoy trabajando en un pequeño script en VBA que permitirían que reenviar automáticamente los mensajes cifrados, incluyendo queridos.Control de encriptar y firmar digitalmente los botones en Outlook 2007 o posterior

El único problema que tengo es la eliminación de la encriptación mediante programación.

pensé que podría hacerlo de esta manera:

  • Abra el mensaje
  • anule la selección de las opciones iniciar Cifrar &
  • Reenviar mensaje

Con este enfoque no sé cómo obtener una referencia a los botones de signo Encrypt &.

Aquí está el código que funciona para los correos cifrados estándar, no. Me puse este método como una "regla de correo electrónico" para todos los correos entrantes:

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


    MyMail.Recipients.Add "[email protected]" 
    MyMail.Recipients.Add "[email protected]" 
    Item_Send (MyMail) 


End Sub 

Antecedentes

Hay un requisito para reenviar todos los mensajes entrantes para una dirección de departamento para ciertas personas. Reenviarlos encriptados causa todo tipo de problemas de certificados entre varias versiones de Outlook (2003/2007/2010/etc) ya que todos necesitan tener la clave privada de la dirección del departamento y eso parece estar en conflicto con su certificado de cuenta personal (obtengo todos tipo de comportamiento errático, a veces funciona, a veces no).

Enfoques alternativos

  • que se dan cuenta de que, debido a las restricciones de seguridad el enfoque actual probablemente no funcionará, así que estoy en alternativas. Tal vez si creo un complemento para Outlook, ¿eso me dará acceso a alguna API de seguridad para descifrar los mensajes entrantes?

  • Crear un cliente POP, ir a buscar, descifrar manualmente los mensajes y reenviarlo. Este es probablemente el enfoque más difícil ya que hay muchos algoritmos/formatos de cifrado compatibles con Outlook por defecto.

¿Alguna otra idea? ¡Gracias!

+0

Suena sospechosamente como malware. Descifrar y reenviar mensajes mediante programación no es algo que deba hacer a menos que intente hacer algo malicioso. –

+0

@Ken White, por favor no salte a conclusiones. Aquí hay un requisito para reenviar todos los mensajes entrantes para una dirección de departamento a ciertas personas. Reenviarlos cifrados causa todo tipo de problemas de certificados entre varias versiones de Outlook (2003/2007/2010/etc) ya que todos necesitan tener la clave privada de la dirección del departamento y que entra en conflicto con su certificado de cuenta personal ... – Bogdan

+0

No lo hice Salte a cualquier conclusión. Dije que sonaba sospechoso (que todavía lo hace, hasta que lo expliques en tu comentario). –

Respuesta

0

que acabó creando un cliente de correo electrónico IMAP utilizando la excelente biblioteca Mail.dll. Lo recomiendo encarecidamente por correo electrónico: excelente documentación, excelente soporte.

0

En puño, pensé que tenía que ser un método en el objeto MailItem, pero no hay una función MailItem.Encrypt().

Esto tomó un tiempo para encontrar: http://support.microsoft.com/?kbid=279013

No creo que hay una manera de hacer lo que quiera de la manera deseada, pero tal vez puede utilizar la información en ese enlace para crear un correo personalizado formulario de mensaje con un artículo de correo como entrada y enviarlo después.

+0

Vi ese artículo también, pero gracias por mirarlo. Lamentablemente, esa información es para Outlook 2000 y Microsoft cambió por completo la API para los elementos de la interfaz. De todos modos, actualmente construí un cliente PoC IMAP usando Mail.dll (http://www.lesnikowski.com/mail/) y las cosas se ven geniales. – Bogdan

+0

¡Buena oferta! Entonces este dll da las funciones? Vi la nueva API en el sitio de Microsoft ... ¿hay una API para lo que hiciste? – Jeff

+0

Esa biblioteca proporciona todo lo que necesita para crear un cliente de correo electrónico (POP/IMAP/SMTP/SMIME/etc.) y tiene una gran documentación. Y tiene un precio razonable. – Bogdan

3

Sé que este es un hilo más antiguo, pero para los interesados, la forma correcta de alternar (habilitar o deshabilitar) programáticamente y alternar programáticamente el cifrado (y también verificar la firma y el cifrado) se muestra en el artículo de VBA al que se hace referencia a continuación . Esto también puede hacerse en .NET con ajustes menores

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

Por ejemplo, la siguiente función en C# .NET se puede utilizar en Outlook 2007, 2010, 2013 para comprobar si está cifrada mediante programación un elemento de correo electrónico:

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; 
    } 
Cuestiones relacionadas