Чи можна створити посилання на певне повідомлення електронної пошти в Outlook?


63

Я використовую Outlook як електронний клієнт на роботі, але я не хочу використовувати його для управління своїми завданнями та завданнями. (Натомість я використовую текстові файли у звичайному форматі та режим Emacs.

Чи існує якийсь розумний спосіб створити посилання (URL-адресу), яке відкриє конкретну електронну пошту в Outlook при натисканні?


Хтось із достатньою репутацією відповість на це питання, будь ласка? Ми говоримо про (TAG =>) "org-mode".
Кекс Доза

Відповіді:


32

Ви можете зробити це за допомогою трохи коду в Outlook і трохи коду в Emacs.

По-перше, якщо ви використовуєте Outlook 2007, вам потрібно ввімкнути URL-адреси Outlook із додаванням реєстру. Інструкції та файл реєстру можна знайти тут люб'язно Девід Тан.

Далі цей макрос можна додати до Outlook і отримає GUID поточного повідомлення електронної пошти, створить посилання в Org-Mode та здасть його в буфер обміну.

'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

Як зауважив кушик у коментарях, doClipboard.SetTextчастину можна розширити, щоб розмежувати різні типи предметів:

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

Майже там, додайте цю маленьку частину lisp до каталогу lisp emacs, щоб увімкнути посилання на 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.

(require 'org-outlook)

Тепер ви можете зателефонувати до макросу (я додав його на панель інструментів в Outlook для швидкого доступу), і ви зможете швидко створити посилання на електронну пошту в Emacs.

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


4
Це чудово, дякую! Одне спрощення: я не зіпсувався з реєстром, щоб увімкнути URL-адреси Outlook, замість цього я просто змінив виклик w32-shell-Execute на це: (w32-shell-Execute "open" "C: / Program / Microsoft Office / Office12 / OUTLOOK.EXE "(concat" / select "" outlook: "id)
Крістіан Берг

1
Дякую за цю відповідь. Я з’ясував, що мені дещо потрібно створити порожню форму, щоб запобігти помилці компіляції на невизначеному DataObject.
Лоран '

@ChristianBerg: Я використовую Outlook 2003, тому, можливо, у мене можуть бути гіперпосилання, не турбуючись з реєстром, але ваше спрощення не спрацювало, Outlook не зміг знайти URL-адресу. І кожного разу, коли я натискав на посилання в Emacs, запускався новий прогноз-процес. Тож я дотримувався чудового рішення by user259 ...
Keks Dose

1
Я трохи подряпав цей свербіж, тому що мені довелося записувати посилання на деякі зустрічі для роботи над пов'язаними предметами (тому я можу посилатися на інформацію / вкладення в них або відповідати на всі, коли у мене є оновлення тощо). Тепер це може експортувати пошту, елементи календаря, контакти, нотатки, записи журналів і принаймні не вийде з ладу при виклику інших записів. Змінений код розміщено на pastebin.com/gNWLVNRk (я можу надати різницю, якщо це допоможе - хоча я не знаю, як це зробити у VBA). Мені не довелося вносити будь-яких інших змін (на стороні emacs або regsitry), щоб це працювало на моєму кінці. HTH.
кушик

1
Для вирішення помилки типу DataObject для мене працювало наступне. У редакторі макросів перейдіть до Інструменти-> Посилання. Клацніть Огляд, виберіть файл C:\Windows\System32\fm20.dllі натисніть OK.
Хьюго Іделер

6

Я вирішив це, написавши простий 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

натрапив на Linker applet.going, щоб спробувати його. Ви можете також захотіти http://www.teamscope.com/otherpro/utilities.asp#linker

Ось маркетинговий хід ..

Linker ™ для Windows® створює гіперпосилання на елементи та папки в Outlook та на файли та папки в Провіднику Windows. Це аплет системного лотка, який розміщує гіперпосилання в буфер обміну Windows. Потім гіперпосилання може бути вставлено у будь-який документ, веб-сторінку, електронну пошту або будь-який документ, що підтримує гіперпосилання.

Привітання з сонячної Південної Африки!


Лінкер працює іноді, інший раз не так вже й багато. Загалом відчуваєш себе досить баггі в Win 7 + Outlook 2010
Енді

Використовуючи Office Pro Plus 2016 + Win 10 Pro, і це не спрацювало. Він порушується під час доступу до скопійованих посилань - тому при натисканні на \\ <адресу електронної пошти> \ Чернетки \ ~ тест, невідомий додаток вибирається на виграш 10, тому він розривається.
Насрі Наджіб

1

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

Якщо ви використовуєте .doc або більш "просунуті" файли, ніж .txt, ви можете посилатися на цей файл повідомлення Outlook.


1
Я піду з тим рішенням. Ось мій новий робочий процес: перетягніть пошту у тимчасову папку. Створіть елемент todo в org-режимі. Додайте файл повідомлення як додаток до елемента: Cc Ca m (файл повідомлення переміщено в папку з додатками). Пізніше я можу відкрити повідомлення з пункту todo, натиснувши Cc Ca o.
Крістіан Берг


0

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


Інші відповіді показують, що це можливо, звідси і голосування.
Саару Ліндестке

0

Можливо, ваша вимога відрізняється від моєї.

Outook 2013> Вкладка повідомлень (ваш звичайний вигляд)> Кнопка «Дії»> Перегляд у браузері

Потім я отримую це посилання з браузера.

Сподіваюся, що допоможе


2
Це здавалося багатообіцяючим, але Outlook 2013для мене це створює .mhtфайл в AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` and opens that in IE using a 'mhtml:file://.. URL-адресі, тому не йдіть.
Жалюгідна змінна

0

Ви можете скопіювати електронну пошту Outlook на OneNote (постачається у вигляді жовтої літери піктограми), потім клацніть правою кнопкою миші та виберіть "посилання на абзац", а потім вставте посилання в інший документ, який може працювати із посиланнями.

Але як би там не було, Майкрософт повинен був зробити цю процедуру посилання на електронну пошту стандартною функцією. Це була така корисна особливість Lotus Notes.


Це корисна функція. Але, яка модель безпеки? Ви хочете, щоб поганий хлопець надіслав вам посилання в електронному листі, яке ви могли б відкрити випадково? Посібники, звичайно, не видно зовні - якщо вони не просочуються ...
Krazy Glew

0

У мене немає достатньої кількості репутаційних кредитів для коментаря до прийнятої відповіді вище, але я хотів внести перехресне посилання для перегляду на відмінну відповідь, надану від @ user25995 - яку я опублікував у (emacs) StackExchange .

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


Коментар не слід надсилати як відповідь через неможливість надати фактичний коментар.
Рамхаунд

2
@Ramhound - я взяв болі, щоб вказати на прийняту відповідь, навіть надавши посилання та визнавши автора. Тоді я запропонував невелику доопрацювання, що дозволяє уникнути використання функції, яка зараз застаріла. Я не мав наміру порушувати протокол тут - чи є правильний спосіб повідомляти це, якщо у мене недостатньо балів Brownie, щоб прокоментувати прийняту відповідь?
kwoodham

-1

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

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

І лише для розкриття інформації я працюю в Microsoft, хоча я не асоціювався ні з командами Outlook, ні з Wunderlist.


1
Будь ласка, прочитайте запитання ще раз уважно. Ваша відповідь не відповідає на початкове запитання. ОП використовує emacs.
DavidPostill

@DavidPostill З повагою я подумав, що так і зробив. Ось чому я включив №4 як спосіб отримати URL-адресу до повідомлення, яке потім можна зберігати в будь-якому місці, в тому числі в текстовому файлі.
AJSkew
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.