Puis-je créer un lien vers un message électronique spécifique dans Outlook?

63

J'utilise Outlook comme client de messagerie au travail, mais je ne souhaite pas l'utiliser pour gérer mes tâches et mes tâches. (À la place, j'utilise des fichiers de texte brut et le mode d'organisation Emacs.) Étant donné que de nombreuses tâches commencent en tant que courriers dans ma boîte de réception, j'ai souvent besoin de faire référence à ces courriers.

Existe-t-il un moyen astucieux de créer un lien (une URL) qui ouvre un courrier électronique spécifique dans Outlook lorsque vous cliquez dessus?

Christian Berg
la source
Quelqu'un ayant suffisamment de réputation retaguerait-il cette question, s'il vous plaît? Nous parlons de (TAG =>) "org-mode".
Keks Dose

Réponses:

32

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.SetTextpartie 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.

Saaru Lindestøkke
la source
4
C'est génial, merci! Une simplification: je n’ai pas manipulé le registre pour activer les URL Outlook, mais j’ai simplement changé l’appel w32-shell-execute en: (w32-shell-execute "open" "C: / Program / Microsoft Office / Office12 / OUTLOOK.EXE "(concat" / select "" outlook: "id)
Christian Berg le
1
Merci pour cette réponse. J'ai découvert que j'avais en quelque sorte besoin de créer un formulaire vide pour éviter les erreurs de compilation sur un objet de données non défini.
Laurent '
@ChristianBerg: J'utilise Outlook 2003, alors je peux peut-être avoir des hyperliens sans s'embarrasser du registre, mais votre simplification n'a pas fonctionné, Outlook n'a pas pu trouver l'URL. Et chaque fois que je cliquais sur un lien dans Emacs, un nouveau processus de création de perspectives était lancé. Je me suis donc contenté de l'excellente solution de user259 ...
Keks Dose
1
J'ai "gratté cette démangeaison" un peu plus, car je devais enregistrer des liens vers certains rendez-vous pour travailler sur des éléments connexes (afin que je puisse me référer aux infos / pièces jointes ou répondre à toutes les questions lorsque j'ai des mises à jour, etc.). Maintenant, cela peut exporter des courriers, des éléments d'agenda, des contacts, des notes, des entrées de journal et au moins n'échouera pas s'il est invoqué sur d'autres entrées. Le code modifié se trouve à pastebin.com/gNWLVNRk (je peux fournir un diff si cela peut aider - bien que je ne sache pas comment utiliser VBA). Je n'avais pas besoin de faire d'autres changements (côté emacs ou regsitry) pour que cela fonctionne de mon côté. HTH.
koushik
1
Pour résoudre l'erreur de type DataObject, les éléments suivants ont fonctionné pour moi. Dans l'éditeur de macro, allez dans Outils-> Références. Cliquez sur Parcourir, sélectionnez le fichier C:\Windows\System32\fm20.dllet appuyez sur OK.
Hugo Ideler
6

J'ai résolu ceci en écrivant un simple vbscript ( télécharger ):

Set Outlook = CreateObject("Outlook.Application")
Set SelectedItem = Outlook.ActiveExplorer.Selection.Item(1)
Set Shell = CreateObject("Shell.Application")
Shell.ShellExecute "cmd", "/c echo Outlook:" & SelectedItem.entryID & " | clip", "", "runas", 1

Il copie dans votre presse-papiers un lien de l'élément (e-mail, entrée d'agenda, ...) que vous avez sélectionné dans Outlook:

Outlook:176CZREX7A79L9TG1T0AJ6HQ8DEBLTFS60HUQYKT2IXBBZ9ZZVA73MNRYVRWRL4RY0VCPQE1IB5GAWY0D8OSMOB4IFDV5OMG9NX2BBKGFA3IWSD62UCNVK0HD9GA80BIDZSBCZL7INCT

Vous pouvez même utiliser un service de redirection pour obtenir un lien HTTP (car les Outlook:liens ne sont probablement pas détectés automatiquement si vous les collez, mais les liens HTTP le sont) ( téléchargement ), il suffit de remplacer la dernière ligne par:

Shell.ShellExecute "cmd", "/c echo https://api.fnkr.net/goto/jsclient/raw/?closeAfter=500#Outlook:" & SelectedItem.entryID & " | clip", "", "runas", 1

Notez que vous devez d'abord faire Outlook:fonctionner les liens.
http://www.slipstick.com/problems/outlook-missing-outlook-protocol/ (faites défiler jusqu'à "Faites-le pour moi")

Testé avec Outlook 2010.

fnkr
la source
3

est tombé sur Linker applet.allant l'essayer .. vous voudrez peut-être aussi http://www.teamscope.com/otherpro/utilities.asp#linker

Voici le drible marketing ..

Linker ™ pour Windows® crée des hyperliens vers des éléments et des dossiers dans Outlook, ainsi que vers des fichiers et des dossiers dans l'Explorateur Windows. C'est un applet de la barre d'état système qui place le lien hypertexte dans le presse-papier de Windows. Le lien hypertexte peut ensuite être collé dans tout document Microsoft Office, page Web, message électronique ou tout document prenant en charge les liens hypertexte.

Salutations de l'Afrique du Sud ensoleillée!


la source
Linker fonctionne parfois, d'autres fois moins. Globalement, on se sent assez bogué dans Win 7 + Outlook 2010
Andy
À l'aide d'Office Pro Plus 2016 + Win 10 Pro, et cela n'a pas fonctionné. Elle se brise lors de l’accès aux liens copiés. Ainsi, lorsque vous cliquez sur \\ <adresse e-mail> \ Brouillons \ ~ test, l’application inconnue est sélectionnée par un gain de 10;
Nasri Najib
1

Je ne suis pas sûr de faire référence à un e-mail spécifique, mais selon votre système, vous pourrez peut-être copier l'e-mail au même emplacement que l'élément à modifier. Il suffit de glisser / déposer le courrier dans un dossier ou sur le bureau pour créer une copie du courrier que vous pouvez traiter comme un fichier normal.

Si vous utilisez des fichiers .doc ou plus "avancés" que des fichiers .txt, vous pouvez créer un lien vers ce fichier de message Outlook.

Paxxi
la source
1
Je vais aller avec cette solution. Voici mon nouveau flux de travail: faites glisser le courrier dans un dossier temporaire. Créez la tâche en mode org. Ajoutez le fichier de message en tant que pièce jointe à l'élément: Cc Ca m (le fichier de message est déplacé vers le dossier des pièces jointes). Plus tard, je peux ouvrir le message de la tâche en appuyant sur Cc Ca o.
Christian Berg
0

Pas sans une sorte de code personnalisé. L'URI Outlook peut vous amener au dossier contenant dans Outlook, mais c'est à peu près tout. Vous auriez besoin d'une stratégie de classement intelligente qui corresponde à votre stratégie de création de liens pour obtenir un niveau de détail plus fin.

écailleur
la source
D'autres réponses montrent que c'est possible, d'où le vote négatif.
Saaru Lindestøkke
0

Votre exigence est probablement différente de la mienne.

Outook 2013> Onglet Message (votre vue normale)> Bouton 'Actions'> Afficher dans le navigateur

Ensuite, je reçois ce lien du navigateur.

J'espère que l'aide

Franc
la source
2
Cela semblait prometteur, mais Outlook 2013pour moi, cela crée un .mhtfichier dans l' AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` and opens that in IE using a 'mhtml:file://.. URL, donc pas question.
Misérable Variable
0

Vous pouvez copier un courrier électronique Outlook dans OneNote (une icône en forme de lettre jaune), cliquer avec le bouton droit de la souris et sélectionner "lien vers un paragraphe", puis coller le lien dans un autre document pouvant fonctionner avec des liens.

Quoi qu'il en soit, Microsoft aurait dû faire de cette liaison avec un courrier électronique une fonctionnalité standard. C'était une fonctionnalité tellement utile de Lotus Notes.

Umiboshi
la source
C'est une fonctionnalité utile. Mais quel est le modèle de sécurité? Voulez-vous qu'un méchant vous envoie un lien dans un courrier électronique que vous pourriez ouvrir par accident? Les GUID, bien sûr, ne sont pas visibles à l'extérieur - à moins qu'ils ne fuient ...
Krazy Glew
0

Je n'ai pas suffisamment de crédits de réputation pour commenter la réponse acceptée ci-dessus, mais je voulais faire une référence croisée pour une révision de l'excellente réponse fournie par @ user25995 - que j'ai publiée dans (emacs) StackExchange .

Sur la base d'un commentaire que j'ai reçu à une question que j'ai postée là-bas, j'ai modifié l'utilisation de (obsolète) org-add-link-typeen org-link-set-parametersincluant une export:fonction afin que le backend d'exportation HTML me donne un <a href="outlook:...">type de lien correctement formaté .

Kwoodham
la source
Les commentaires ne doivent pas être soumis en guise de réponse, car vous êtes incapable de soumettre un commentaire.
Ramhound
2
@Ramhound - Je me suis donné beaucoup de mal pour indiquer la réponse acceptée, même en fournissant un lien et en reconnaissant l'auteur. J'ai ensuite proposé une petite révision qui évite l'utilisation d'une fonction désormais obsolète. Je n'avais pas l'intention de violer le protocole ici - existe-t-il un moyen correct de le communiquer si je n'ai pas assez de points Brownie pour commenter la réponse acceptée?
Kwoodham
-1

J'utilise Wunderlist pour gérer mes tâches et j'ai constaté qu'avec le complément Wunderlist pour Outlook, je pouvais créer de nouvelles tâches directement à partir d'un message électronique et que Wunderlist créait automatiquement un lien dans les notes de tâches vers le message d'origine. Quelques points à garder à l'esprit:

  1. Je déplace toujours le message d'abord dans un dossier car (la dernière fois que j'ai vérifié), l'URL se brise si vous déplacez ensuite le message dans un autre dossier.
  2. Même s'il existe un complément pour le bureau Outlook, il ne semble pas inclure le lien. J'utilise donc Outlook sur le Web pour créer une tâche.
  3. Je n'ai essayé cela qu'avec Outlook sur le Web pour Office 365 à l'aide d'un compte de messagerie d'entreprise. Je suppose que cela fonctionne aussi bien avec les comptes Office 365 grand public, mais je ne l'ai pas essayé.
  4. Même si vous n'utilisez pas Wunderlist, vous pouvez vous inscrire et l'utiliser pour générer l'URL lorsque vous en avez besoin.

Et juste pour la divulgation, je travaille pour Microsoft, bien que je ne sois pas associé aux équipes Outlook ou Wunderlist.

AJSkew
la source
1
Veuillez relire attentivement la question. Votre réponse ne répond pas à la question initiale. OP utilise emacs.
DavidPostill
@ DavidPostill Respectueusement, je pensais l'avoir fait. C'est pourquoi j'ai inclus # 4 comme moyen d'obtenir une URL vers un message qui peut ensuite être stocké n'importe où, y compris dans un fichier texte.
AJSkew