Ви можете зробити це за допомогою трохи коду в Outlook і трохи коду в Emacs.
По-перше, якщо ви використовуєте Outlook 2007, вам потрібно ввімкнути URL-адреси Outlook із додаванням реєстру. Інструкції та файл реєстру можна знайти тут люб'язно Девід Тан.
Далі цей макрос можна додати до Outlook і отримає GUID поточного повідомлення електронної пошти, створить посилання в Org-Mode та здасть його в буфер обміну.
'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
Як зауважив кушик у коментарях, doClipboard.SetText
частину можна розширити, щоб розмежувати різні типи предметів:
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
Майже там, додайте цю маленьку частину lisp до каталогу lisp emacs, щоб увімкнути посилання на 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
І нарешті, оновіть файл .emacs, щоб включити код посилання Outlook. Просто додайте це десь після налаштування режиму org.
(require 'org-outlook)
Тепер ви можете зателефонувати до макросу (я додав його на панель інструментів в Outlook для швидкого доступу), і ви зможете швидко створити посилання на електронну пошту в Emacs.
Один готч, зміна GUID, коли ви переміщуєте повідомлення між сховищами документів, тому, якщо ви отримаєте GUID до повідомлення, поки воно перебуває на вашому сервері Exchange, а потім перемістіть його у ваш локальний файл PST, посилання зміниться. Перемістіть повідомлення, перш ніж отримати GUID.