Возникла проблема с выходом из амперсанда в ссылке при вызове почтовой утилиты в MacO - PullRequest
0 голосов
/ 19 октября 2019

Итак, у меня есть некоторый код автоматизации, написанный на Python, который заполняет строку шаблона электронной почты, один из которых является ссылкой на запрос Splunk, который содержит символ &. После того, как я заполнил письмо, я беру переданные аргументы, чтобы создать командную строку для вызова библиотеки подпроцесса следующим образом:

pipe = subprocess.Popen(cmdline, stdin=inout, stdout=inout,
                                stderr=inout, close_fds=closefds,
                                preexec_fn=setsid, startupinfo=startupinfo)

Теперь cmdline - это список, который содержит следующее:

['open', "mailto:comman_separated_emails?cc=dummy_email@gmail.com&subject=My subject&body=Some 
text with the following problem link: 
https://splunk-link.com:443/app/my_app/@go?dispatch_view=alert&s=%2FservicesNS%2Fnobody%2Fapigateway-prod%2Fsaved%2Fsearches%2FAPI%2520Gateway%2520Credential%2520Security%2520Violation%253A%2520Auth%2520Header%2520on%2520HTTP%2520%2528Non%2520SSL%2529%2520-%2520Daily"]

Каждый раз, когда открывается мой почтовый провайдер по умолчанию, в данном случае Outlook, сообщение обрезается прямо в & в ссылке.

Я пытался поставить ссылку в двойном иодиночные кавычки, с экранированием \&\ и ^&, но все равно не повезло.

Может кто-нибудь помочь мне? Заранее спасибо.

-Брайан

1 Ответ

1 голос
/ 19 октября 2019

& - разделитель между параметрами в URL. Вам необходимо закодировать его как %26.

. Вы можете использовать urllib.parse.quote() для кодирования всех символов, которые должны быть закодированы.

quoted_link = urllib.parse.quote('https://splunk-link.com:443/app/my_app/@go?dispatch_view=alert&s=%2FservicesNS%2Fnobody%2Fapigateway-prod%2Fsaved%2Fsearches%2FAPI%2520Gateway%2520Credential%2520Security%2520Violation%253A%2520Auth%2520Header%2520on%2520HTTP%2520%2528Non%2520SSL%2529%2520-%2520Daily')
cmdline = ["open", f"""mailto:comman_separated_emails?cc=dummy_email@gmail.com&subject=My subject&body=Some 
text with the following problem link: 
{quoted_link}"""]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...