Vous pouvez le faire avec un peu de code dans Outlook et un peu de code dans Emacs.
Premièrement, si vous utilisez Outlook 2007, vous devez activer les URL Outlook avec un ajout de 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 obtiendra le GUID du message électronique actuel, 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 l'a noté dans les commentaires, la doClipboard.SetText
partie peut être développée pour différencier différents types d'éléments:
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
Presque là-bas, ajoutez ce petit 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
Enfin, mettez à jour votre fichier .emacs pour inclure le code du lien Outlook. Ajoutez simplement ceci quelque part après la configuration du mode org.
(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 le courrier électronique dans Emacs.
Le GUID change lorsque vous déplacez un message entre des magasins de documents. Par conséquent, si vous obtenez le GUID dans le message alors qu'il est sur votre serveur Exchange, puis que vous le déplacez dans votre fichier PST local, le lien sera modifié. Déplacez le message avant d'obtenir le GUID.