Puede hacer esto con un poco de código en Outlook y un poco de código en Emacs.
Primero, si está utilizando Outlook 2007, deberá habilitar las URL de Outlook con una adición de registro. Las instrucciones y el archivo de registro se pueden encontrar aquí por cortesía de David Tan.
A continuación, esta macro se puede agregar a Outlook y obtendrá el GUID del mensaje de correo electrónico actual, creará un enlace de modo Org y lo depositará en el portapapeles.
'Adds a link to the currently selected message to the clipboard
Sub AddLinkToMessageInClipboard()
Dim objMail As Outlook.MailItem
Dim doClipboard As New DataObject
'One and ONLY one message muse be selected
If Application.ActiveExplorer.Selection.Count <> 1 Then
MsgBox ("Select one and ONLY one message.")
Exit Sub
End If
Set objMail = Application.ActiveExplorer.Selection.Item(1)
doClipboard.SetText "[[outlook:" + objMail.EntryID + "][MESSAGE: " + objMail.Subject + " (" + objMail.SenderName + ")]]"
doClipboard.PutInClipboard
End Sub
Como koushik señaló en los comentarios, la doClipboard.SetText
parte se puede expandir para diferenciar entre diferentes tipos de elementos:
If objMail.Class = olMail Then
doClipboard.SetText "[[outlook:" + objMail.EntryID + "][MESSAGE: " + objMail.Subject + " (" + objMail.SenderName + ")]]"
ElseIf objMail.Class = olAppointment Then
doClipboard.SetText "[[outlook:" + objMail.EntryID + "][MEETING: " + objMail.Subject + " (" + objMail.Organizer + ")]]"
ElseIf objMail.Class = olTask Then
doClipboard.SetText "[[outlook:" + objMail.EntryID + "][TASK: " + objMail.Subject + " (" + objMail.Owner + ")]]"
ElseIf objMail.Class = olContact Then
doClipboard.SetText "[[outlook:" + objMail.EntryID + "][CONTACT: " + objMail.Subject + " (" + objMail.FullName + ")]]"
ElseIf objMail.Class = olJournal Then
doClipboard.SetText "[[outlook:" + objMail.EntryID + "][JOURNAL: " + objMail.Subject + " (" + objMail.Type + ")]]"
ElseIf objMail.Class = olNote Then
doClipboard.SetText "[[outlook:" + objMail.EntryID + "][NOTE: " + objMail.Subject + " (" + " " + ")]]"
Else
doClipboard.SetText "[[outlook:" + objMail.EntryID + "][ITEM: " + objMail.Subject + " (" + objMail.MessageClass + ")]]"
End If
Casi allí, agregue este poco de lisp a su directorio de emacs lisp para habilitar los enlaces de Outlook.
;;; org-outlook.el - Support for links to Outlook items in Org
(require 'org)
(org-add-link-type "outlook" 'org-outlook-open)
(defun org-outlook-open (id)
"Open the Outlook item identified by ID. ID should be an Outlook GUID."
(w32-shell-execute "open" (concat "outlook:" id)))
(provide 'org-outlook)
;;; org-outlook.el ends here
Y, por último, actualice su archivo .emacs para incluir el código de enlace de Outlook. Simplemente agregue esto en algún lugar después de configurar org-mode.
(require 'org-outlook)
Ahora puede llamar a la macro (la agregué a mi barra de herramientas en Outlook para un acceso rápido) y puede crear rápidamente un enlace al correo electrónico en Emacs.
Uno tiene, el GUID cambia cuando mueve un mensaje entre almacenes de documentos, por lo que si obtiene el GUID del mensaje mientras está en su servidor de Exchange y luego lo mueve a su archivo PST local, el enlace cambiará. Mueva el mensaje antes de obtener el GUID.