我目前正在尝试将Perl中的电子邮件写入其中包含撇号并且无法弄清楚如何发送它的用户.这是该行的样子:
$to = "o'connell\@website.com";
Run Code Online (Sandbox Code Playgroud)
这是我用来发送电子邮件的行:
system("echo $message | mailx -s $subject $to ");
Run Code Online (Sandbox Code Playgroud)
这是一个电子邮件的示例o'connell@website.com
.由于撇号,它不会发送它.我尝试过以下内容并没有奏效.我mailx
用来发送电子邮件
$to = "o'connell\@website.com";
$to = "o''connell\@website.com";
$to = "o"'"connell\@website.com";
Run Code Online (Sandbox Code Playgroud)
这些都没有奏效.我可以发送电子邮件给那些在他们的电子邮件中没有它的人.有什么建议?
这不是Perl问题,而是shell问题.您必须正确地转义值:
system("echo $message | mailx -s $subject \"$to\" ");
Run Code Online (Sandbox Code Playgroud)
或者,更具可读性:
system qq(echo $message | mailx -s $subject "$to");
Run Code Online (Sandbox Code Playgroud)
我也逃避了这个问题,你也应该非常小心$ message,如果它包含了什么
; rm -rf /
Run Code Online (Sandbox Code Playgroud)
有关如何直接从Perl发送电子邮件,请参阅Task :: Kensho :: Email.