首页 > 解决方案 > 在php中从exec发送电子邮件

问题描述

关于将参数作为变量传递给我在 pHP 中的 exec 中的邮件命令,我几乎没有什么问题。

这是有效的代码:

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 )

回显电子邮件地址变量又名 echo $varEmail 给出用户输入的电子邮件地址。

我想,我不知道如何在这个命令中将参数作为变量传递。非常感谢任何帮助。

谢谢,

标签: phpemail

解决方案


在您提供的行中,包含给 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 );

推荐阅读