Vous pouvez le faire avec un peu de code dans Outlook et un peu de code dans Emacs.
Tout d'abord, si vous utilisez Outlook 2007, vous devez activer les URL d'Outlook par un ajout au registre. Les instructions et le fichier de registre peuvent être trouvés ici avec l'aimable autorisation de David Tan.
Ensuite, cette macro peut être ajoutée à Outlook et récupérera le GUID du message électronique en cours, créera un lien en mode Org et le déposera dans le presse-papiers.
'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
Comme koushik noté dans les commentaires, le doClipboard.SetText
peut être étendue pour différencier les différents types d'articles :
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
Vous y êtes presque, ajoutez ce petit bout de lisp à votre répertoire emacs lisp pour activer les liens 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
Et enfin, mettez à jour votre fichier .emacs pour inclure le code de lien Outlook. Il suffit de l'ajouter quelque part après la configuration de org-mode.
(require 'org-outlook)
Maintenant, vous pouvez appeler la macro (je l'ai ajoutée à ma barre d'outils dans Outlook pour un accès rapide) et vous pouvez rapidement créer un lien vers l'e-mail dans Emacs.
Si vous obtenez le GUID du message alors qu'il se trouve sur votre serveur Exchange et que vous le déplacez ensuite vers votre fichier PST local, le lien sera modifié. Déplacez le message avant d'obtenir le GUID.