Você pode fazer isso com um pouco de código no Outlook e um pouco de código no Emacs.
Primeiro, se você estiver usando o Outlook 2007, precisará habilitar os URLs do Outlook com uma adição do registro. As instruções e o arquivo do registro podem ser encontrados aqui, cortesia de David Tan.
Em seguida, essa macro pode ser adicionada ao Outlook e obterá o GUID da mensagem de email atual, criará um link de modo organizacional e depositará na área de transferência.
'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 observou nos comentários, a doClipboard.SetText
peça pode ser expandida para diferenciar entre diferentes tipos de itens:
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
Quase lá, adicione este pouco de lisp ao diretório emacs lisp para ativar os links do 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
Por fim, atualize o arquivo .emacs para incluir o código do link do Outlook. Basta adicionar isso em algum lugar após a configuração do modo organizacional.
(require 'org-outlook)
Agora você pode chamar a macro (eu a adicionei à minha barra de ferramentas no Outlook para acesso rápido) e criar rapidamente um link para o email no Emacs.
Uma dica: a alteração do GUID quando você move uma mensagem entre armazenamentos de documentos; portanto, se você obtiver o GUID na mensagem enquanto ela estiver no servidor Exchange e depois movê-lo para o arquivo PST local, o link será alterado. Mova a mensagem antes de obter o GUID.