Команда открытия BigSur больше не обрабатывает URL-адреса message://, обходные пути?

В macOS вы можете получить (объясняется здесь, как ) URL-адрес определенного электронного письма. Таким образом, если вы нажмете на этот URL-адрес или вставите его в строку поиска браузера, это конкретное электронное письмо откроется в Mail.app.

Такой URL выглядит так message://<CALoR5A+vANPG9eCcHRHnO@mail.gmail.com>

В Catalina я мог использовать команду для доступа к такому URL-адресу из командной строки, набрав

open -a "Mail.app" "message://<CALoR5A+vANPG9eCcHRHnO@mail.gmail.com>"

Но с BigSur, если я попытаюсь это сделать, я получу следующую ошибку

      The file /Users/macbook/message:/<CALoR5A+vANPG9eCcHRHnO@mail.gmail.com> does not exist.

Такое поведение, похоже, связано с ошибкой в ​​BigSur.

Два вопроса

  1. Вы знаете, если open команда все еще может быть использована для этой задачи?

  2. В качестве альтернативы я ищу обходной путь. Должно быть возможно достичь ожидаемого поведения, потому что если вы пропустите URL-адрес в Chrome, Safari или в редакторе форматированного текста, который поддерживает гиперссылки, он будет правильно обработан.

Я пробовал, но безуспешно многие подходы.

Быстрый скрипт

      import AppKit
NSWorkspace.shared.open(URL(string: "message://<CALoR5A+vANPG9eCcHRHnO@mail.gmail.com>")!)

URL-адрес nil.

Сценарий Apple

      tell application "Mail"
    activate
    open location "message://<CALoR5A+vANPG9eCcHRHnO@mail.gmail.com>"
end tell

Я не уверен, что приведенный выше код работал бы в Catalina, я просто знаю, что в моем случае он просто открывает приложение Mail, ничего не делая.

Использование Chrome

Если вы вставите message://URL-адрес в Chrome, он просит вас подтвердить, что вы хотите открыть его в приложении Mail. Это можно изменить с помощью следующей команды: defaults write com.google.Chrome URLWhitelist -array 'message://*'

Попросить Chrome открыть для вас URL-адрес выглядит более простой задачей, но все же команда open -a "Google Chrome" "message://<CALoR5A+vANPG9eCcHRHnO@mail.gmail.com>" завершается с ошибкой, аналогичной показанной ранее:

      LoR5A+vANPG9eCcHRHnO@mail.gmail.com>"
The file /Users/macbook/message:/<CALoR5A+vANPG9eCcHRHnO@mail.gmail.com> does not exist.

Есть идеи?

1 ответ

Я нашел причину, по которой open команда больше не работает: нужно убрать угловые скобки.

Следующая команда не работает

      open -a "Google Chrome.app" "message:<CALoR5A+vANPG9eCcHRHnO_fNTrzgbMpX666oBGxHWsRaXb5@mail.gmail.com>"

Следующий открывает приложение Mail, которое будет жаловаться, что URL-адрес сломан.

      open -a "Google Chrome.app" "message:CALoR5A+vANPG9eCcHRHnO_fNTrzgbMpX666oBGxHWsRaXb5@mail.gmail.com>"

Наконец, экранирование URL-адреса работает:

      open -a "Google Chrome.app" "message:%3CCALoR5A%2BvANPG9eCcHRHnO_fNTrzgbMpX666oBGxHWsRaXb5%40mail.gmail.com%3E"

Обратите внимание: вы можете сделать так, чтобы URL-адрес начинался с message: или же message://, неважно.

Другие вопросы по тегам