Могу ли я создать ссылку на конкретное сообщение электронной почты в Outlook?


59

Я использую Outlook в качестве почтового клиента на работе, но я не хочу использовать его для управления своими задачами и задачами. (Вместо этого я использую простые текстовые файлы и Emacs org-mode.) Поскольку многие элементы todo начинаются как письма в моей папке входящих, мне часто приходится ссылаться на эти письма.

Есть ли какой-нибудь умный способ создать ссылку (URL), которая открывает конкретное письмо в Outlook при нажатии?


Кто-нибудь с достаточной репутацией пометит этот вопрос? Мы говорим о (TAG = & gt;) "org-mode".
Keks Dose

Ответы:


29

Вы можете сделать это с небольшим количеством кода в Outlook и небольшим количеством кода в Emacs.

Во-первых, если вы используете Outlook 2007, вам нужно включить URL-адреса Outlook с добавлением реестра. Инструкции и файл реестра можно найти Вот любезно предоставлено Дэвидом Тан.

Затем этот макрос можно добавить в Outlook и получить GUID текущего сообщения электронной почты, создать ссылку в режиме Org и поместить ее в буфер обмена.

'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

Почти там, добавьте этот маленький список в каталог emacs lisp, чтобы включить ссылки 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-mode.

(require 'org-outlook)

Теперь вы можете вызвать макрос (я добавил его на свою панель инструментов в Outlook для быстрого доступа), и вы можете быстро создать ссылку на электронную почту в Emacs.

Одна вещь, GUID меняется, когда вы перемещаете сообщение между хранилищами документов, поэтому, если вы получите GUID для сообщения, пока оно находится на вашем сервере Exchange, а затем переместите его в локальный PST-файл, ссылка изменится. Переместите сообщение, прежде чем вы получите GUID.


3
Это здорово, спасибо! Одно упрощение: я не связывался с реестром для включения URL-адресов Outlook, вместо этого я просто изменил вызов w32-shell-execute на этот: (w32-shell-execute "open" "C: / Program / Microsoft Office / Office12 / OUTLOOK.EXE "(concat" / select "" outlook: "id)
Christian Berg

1
Спасибо за этот ответ. Я обнаружил, что мне нужно создать пустую форму, чтобы предотвратить ошибку компиляции в неопределенном DataObject.
Laurent'

@ChristianBerg: я использую Outlook 2003, поэтому, возможно, у меня могут быть гиперссылки, не беспокоясь о реестре, но ваше упрощение не сработало, Outlook не смог найти URL. И каждый раз, когда я нажимал на ссылку в Emacs, запускался новый процесс outlook. Поэтому я остановился на отличном решении пользователя259 ...
Keks Dose

Это фантастика ! Спасибо за предоставление этого решения. Я попробовал это с outlook 2007 с настройкой реестра, и это работало как шарм! Я обнаружил 1 проблему, если запустил макрос, когда у меня выбрано приглашение на встречу / встречу. Код бросил исключение. Поскольку я использую его только в папке «Входящие», я решил это с помощью Dim objMail в качестве объекта вместо MailItem - однако это может быть неправильным решением, поскольку код все равно может завершиться ошибкой, если выбранный элемент не имеет членов Subject / SenderName. Код, вероятно, может проверить, соответствует ли выбранный элемент правильному типу, и предоставить MsgBox, если это не так.
koushik

1
Я немного «поцарапал этот зуд», поскольку мне приходилось записывать ссылки на некоторые встречи для работы над связанными предметами (чтобы я мог ссылаться на информацию / вложения в них или отвечать всем, когда у меня есть обновления и т. Д.). Теперь он может экспортировать письма, элементы календаря, контакты, заметки, записи журнала и, по крайней мере, не будет работать при вызове других записей. Измененный код находится на pastebin.com/gNWLVNRk (Я могу предоставить diff, если это поможет - хотя я не знаю, как заработать в VBA). Мне не нужно было вносить какие-либо другие изменения (на стороне emacs или regsitry), чтобы это работало на моем конце. НТН.
koushik

5

Я решил это, написав простой VBScript ( скачать ):

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

Он копирует ссылку элемента (электронная почта, запись в календаре, ...), который вы в данный момент выбрали в Outlook, в буфер обмена:

Outlook:176CZREX7A79L9TG1T0AJ6HQ8DEBLTFS60HUQYKT2IXBBZ9ZZVA73MNRYVRWRL4RY0VCPQE1IB5GAWY0D8OSMOB4IFDV5OMG9NX2BBKGFA3IWSD62UCNVK0HD9GA80BIDZSBCZL7INCT

Вы даже можете использовать службу перенаправления, чтобы получить ссылку HTTP (потому что Outlook: ссылки, вероятно, не обнаруживаются автоматически, если вы вставляете где-то, но ссылки HTTP есть) скачать ), просто замените последнюю строку на:

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

Обратите внимание, что вам нужно сделать Outlook: ссылки работают в первую очередь.
http://www.slipstick.com/problems/outlook-missing-outlook-protocol/ (прокрутите вниз до «Сделай это для меня»)

Протестировано с Outlook 2010.


3

наткнулся на компоновщик applet.going попробовать его..вы тоже можете http://www.teamscope.com/otherpro/utilities.asp#linker

Вот маркетинговая капелька ..

Linker ™ для Windows® создает гиперссылки на элементы и папки в Outlook, а также на файлы и папки в проводнике Windows. Это апплет в системном трее помещает гиперссылку в буфер обмена Windows. Затем гиперссылка может быть вставлена ​​в любой документ Microsoft Office, веб-страницу, сообщение электронной почты или любой документ, который поддерживает гиперссылки.

Привет из солнечной Южной Африки!


Линкер работает иногда, иногда не так много. В целом чувствует себя довольно глючно в Win 7 + Outlook 2010
Andy

Использование Office Pro Plus 2016 + Win 10 Pro, и это не сработало. Он ломается при доступе к скопированным ссылкам, поэтому при нажатии \\ & lt; адрес электронной почты & gt; \ Drafts \ ~ test неизвестное приложение выбирается win 10, поэтому оно ломается.
Nasri Najib

1

Не без какого-то специального кода. URI Outlook может привести вас к папке, содержащейся в Outlook, но это все. Вам нужно будет придумать умную стратегию регистрации, которая бы соответствовала вашей стратегии связывания, чтобы получить более детальную информацию.


1

Я не уверен относительно ссылки на конкретное электронное письмо, но в зависимости от вашей системы вы можете скопировать электронное письмо в то же место, где находится элемент todo Просто перетащите письмо в папку или на рабочий стол, и оно создаст копию письма, которое вы можете рассматривать как обычный файл.

Если вы будете использовать .doc или более «продвинутые» файлы, чем .txt, вы можете ссылаться на этот файл сообщений Outlook.


1
Я пойду с этим решением. Вот мой новый рабочий процесс: перетащите почту во временную папку. Создайте элемент todo в режиме org. Добавьте файл сообщения как вложение к элементу: C-c C-a m (файл сообщения перемещен в папку вложений). Позже я могу открыть сообщение из пункта todo, нажав C-c C-a o.
Christian Berg


0

Возможно, ваше требование отличается от моего.

Outlook 2013 & gt; Вкладка сообщений (ваш обычный вид) & gt; Кнопка "Действия" & gt; Посмотреть в браузере

Затем я получаю эту ссылку из браузера.

Надеюсь, что помощь


2
Это казалось многообещающим, но в Outlook 2013 для меня это создает .mht файл в AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` and opens that in IE using a 'mhtml:file://.. URL так что не ходи.
Miserable Variable

0

Вы можете скопировать электронную почту Outlook в OneNote (появляется в виде желтой буквы), затем щелкнуть правой кнопкой мыши и выбрать «ссылка на абзац», а затем вставить ссылку в другой документ, который может работать со ссылками.

Но, в любом случае, Microsoft должна была сделать все, что связано с электронной почтой, стандартной функцией. Это была такая полезная функция Lotus Notes.


0

я использую Wunderlist управлять своими задачами и обнаружил, что с Wunderlist надстройка для Outlook Я могу создавать новые задачи непосредственно из сообщения электронной почты, и Wunderlist автоматически создает ссылку в примечаниях к исходному сообщению. Несколько вещей, которые нужно иметь в виду:

  1. Я всегда сначала перемещаю сообщение в папку, потому что (в последний раз я проверено) URL-адрес разрывается, если вы позже переместите сообщение в другую папку.
  2. Несмотря на то, что есть надстройка для рабочего стола Outlook, она, похоже, не включает ссылку, поэтому я использую Outlook в Интернете, когда хочу создать задачу.
  3. Я только пробовал это с Outlook на Web для Office 365 с использованием корпоративной учетной записи электронной почты. Я предполагаю это одинаково хорошо работает с учетными записями Office 365, но не попробовал это.
  4. Даже если вы не используете Wunderlist, вы можете зарегистрироваться и использовать его для генерации URL, когда вам это нужно.

И только для раскрытия информации я работаю на Microsoft, хотя я не связан ни с командами Outlook, ни с Wunderlist.


1
Пожалуйста, внимательно прочитайте вопрос. Ваш ответ делает не ответь на оригинальный вопрос. ОП использует emacs,
DavidPostill

@DavidPostill С уважением, я думал, что сделал. Вот почему я включил № 4 в качестве способа получения URL-адреса для сообщения, которое затем можно сохранить где угодно, в том числе в текстовом файле.
AJSkew

0

У меня недостаточно репутационных кредитов, чтобы добавить комментарий к принятый ответ выше, но я хотел вставить перекрестную ссылку для пересмотра отличного ответа, предоставленного @ user25995 - который я разместил на (emacs) StackExchange ,

На основании комментария, который я получил к вопросу, который я разместил там, я изменил использование (устарело) org-add-link-type в org-link-set-parameters и включил export: функция так, чтобы бэкенд экспорта HTML дал мне правильно отформатированный <a href="outlook:..."> Тип ссылки.


Комментарий не должен быть представлен в качестве ответа из-за вашей неспособности предоставить фактический комментарий.
Ramhound

1
@Ramhound - я старался указывать на принятый ответ, даже предоставляя ссылку и признавая автора. Затем я предложил небольшую ревизию, которая позволяет избежать использования функции, которая в настоящее время устарела. Я не собирался нарушать протокол здесь - есть ли правильный способ сообщить об этом, если у меня недостаточно очков Брауни, чтобы прокомментировать принятый ответ?
kwoodham
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.