发送电子邮件到Perl给地址中有撇号的人

use*_*608 1 email shell perl

我目前正在尝试将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)

这些都没有奏效.我可以发送电子邮件给那些在他们的电子邮件中没有它的人.有什么建议?

cho*_*oba 5

这不是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.

  • @ user081608不,它应该是`qq`,这两个片段应该完全相同.`qq`插入变量,而`q`则不插入变量.请参阅`perldoc perlop`中[quote-like operators](http://perldoc.perl.org/perlop.html#Quote-Like-Operators)一节. (2认同)