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

59

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

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

Christian Berg
источник
Кто-нибудь с достаточной репутацией пометит этот вопрос? Мы говорим о (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.

fnkr
источник
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, но это все. Вам нужно будет придумать умную стратегию регистрации, которая бы соответствовала вашей стратегии связывания, чтобы получить более детальную информацию.

squillman
источник
1

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

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

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

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

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

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

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

Frank
источник
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.

Umiboshi
источник
0

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

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

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

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

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

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

kwoodham
источник
Комментарий не должен быть представлен в качестве ответа из-за вашей неспособности предоставить фактический комментарий.
Ramhound
1
@Ramhound - я старался указывать на принятый ответ, даже предоставляя ссылку и признавая автора. Затем я предложил небольшую ревизию, которая позволяет избежать использования функции, которая в настоящее время устарела. Я не собирался нарушать протокол здесь - есть ли правильный способ сообщить об этом, если у меня недостаточно очков Брауни, чтобы прокомментировать принятый ответ?
kwoodham