php - 在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 给出用户输入的电子邮件地址。
我想,我不知道如何在这个命令中将参数作为变量传递。非常感谢任何帮助。
谢谢,
解决方案
在您提供的行中,包含给 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 );
推荐阅读
- python - 如何将 for 循环的输出显示为列表,然后将其附加到另一个列表?
- java - 我无法重现和纠正 Android 崩溃日志中的错误
- python - Docker 无法识别 .env postgres 变量
- autohotkey - 当使用相同的键但不同的功能时,Keywait 会失败?
- c - 为什么交换后价值会改变?
- r - R中的警告“不是一个因素变量”在标记的包中
- node.js - 触发rabbitmq阻塞事件怎么办?
- c++ - SOS:编译时代码正在生成 .o 文件但没有 .exe 文件
- mysql - MySql解释行大行计数,表扫描?
- javascript - 当我执行 npm start 时,ext[key].bind 不是一个函数