在php中从exec发送电子邮件

时间:2018-10-25 12:53:42

标签: php email

对于在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给出用户输入的电子邮件地址。

我认为,我不知道如何在此命令中将参数作为变量传递。我们非常感谢您的帮助。

谢谢

1 个答案:

答案 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 );