对于在pHP的exec中将参数作为变量传递给我的mail命令,我几乎没有疑问。
这是有效的代码:
exec('echo "This is mail tesing" | /bin/mail -s "Testing" -a myresults.csv abc@mymail.com 2>&1', $output2 );
我想做的是: 1)将结果作为变量传递,例如我在PHP中有另一个exec命令,用于执行返回结果输出文件名称的python脚本。该输出文件需要通过电子邮件发送。 2)用户通过网站输入电子邮件地址,因此我想在/ bin / mail命令中传递该电子邮件地址。
这不起作用:
exec('echo "Test mail using mail" | /bin/mail -s "Testing" -a results.csv $varEmail 2>&1', $output2 );
网页上显示错误:
Send options without primary recipient specified. [1] => Usage: mail -eiIUdEFntBDNHRVv~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users )
回显电子邮件地址变量a.k.a echo $ varEmail给出用户输入的电子邮件地址。
我认为,我不知道如何在此命令中将参数作为变量传递。我们非常感谢您的帮助。
谢谢
答案 0 :(得分:0)
在您提供的行中,包含给exec的命令的字符串用简单的引号引起来。因此,该字符串内的php变量不会被替换。
您可以改用它(使用$varEmail
将.
连接到字符串):
exec('echo "Test mail using mail" | /bin/mail -s "Testing" -a results.csv '.$varEmail.' 2>&1', $output2 );
另一种解决方案是使用双引号,但是您将不得不对shell命令的双引号进行转义:
exec("echo \"Test mail using mail\" | /bin/mail -s \"Testing\" -a results.csv $varEmail 2>&1", $output2 );