在 MacOs 中调用邮件实用程序时转义 link 中的符号时出现问题
Having an issue escaping an ampersand in a link when calling mail utility in MacOs
所以我用 Python 编写了一些自动化代码来填充电子邮件模板字符串,其中一个是 link 到包含字符 &
的 Splunk 查询。一旦我填充了电子邮件,我就会使用传入的 args 创建一个 cmdline 来调用子进程库,如下所示:
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)时,邮件都会在 link 中的 &
处被截断。
我试过将 link 放在双引号和单引号中,用 \&\
和 ^&
转义,但还是不行。
有人可以帮助我吗?提前谢谢你。
-布莱恩
&
是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}"""]
所以我用 Python 编写了一些自动化代码来填充电子邮件模板字符串,其中一个是 link 到包含字符 &
的 Splunk 查询。一旦我填充了电子邮件,我就会使用传入的 args 创建一个 cmdline 来调用子进程库,如下所示:
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)时,邮件都会在 link 中的 &
处被截断。
我试过将 link 放在双引号和单引号中,用 \&\
和 ^&
转义,但还是不行。
有人可以帮助我吗?提前谢谢你。
-布莱恩
&
是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}"""]