Puoi farlo con un po 'di codice in Outlook e un po' di codice in Emacs.
Innanzitutto, se si utilizza Outlook 2007, è necessario abilitare gli URL di Outlook con un'aggiunta del registro. Le istruzioni e il file di registro sono disponibili qui per gentile concessione di David Tan.
Successivamente, questa macro può essere aggiunta a Outlook e otterrà il GUID del messaggio di posta elettronica corrente, creerà un collegamento in modalità Org e lo depositerà negli Appunti.
'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
Come notato da koushik nei commenti, la doClipboard.SetText
parte può essere espansa per differenziare i diversi tipi di elementi:
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
Quasi lì, aggiungi questo pezzetto di lisp alla tua directory di emacs lisp per abilitare i collegamenti di 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
Infine, aggiorna il tuo file .emacs per includere il codice di collegamento di Outlook. Aggiungilo da qualche parte dopo aver impostato la modalità organizzazione.
(require 'org-outlook)
Ora puoi chiamare la macro (l'ho aggiunta alla mia barra degli strumenti in Outlook per un rapido accesso) e puoi creare rapidamente un link all'e-mail in Emacs.
Un problema, il GUID cambia quando si sposta un messaggio tra archivi documenti, quindi se si ottiene il GUID nel messaggio mentre si trova sul server Exchange e lo si sposta nel file PST locale, il collegamento cambierà. Spostare il messaggio prima di ottenere il GUID.