я использую shell_exec
функция для вызова mailx
Команда на Ubuntu для отправки почты, но получил ошибку, так как в команде есть определенный символ, пожалуйста, смотрите мой код ниже и результат.
<?php
$stringA="Visit STAR WARS™";
$stringB="Visit STAR WARS";
echo "StringA:", $stringA, "<br/>";
$res = shell_exec("echo $stringA | mailx -s 'testA' [email protected]");
echo $res, "<br/>";
echo "StringB:", $stringB, "<br/>";
$res = shell_exec("echo $stringB | mailx -s 'testB' [email protected]");
echo $res, "<br/>";
Когда я вызываю эту страницу на сервере, я получаю страницу ниже:
StringA: Visit STAR WARS™
"/var/www/dead.letter" 1/19
StringB: Visit STAR WARS
и я получил письмо с содержанием Visit STAR WARS
и не может получить письмо с контентом Visit STAR WARS™
,
Я проверил из функции phpinfo, и default_charset это «utf-8».
если я запускаю команду "echo Visit STAR WARS™ | mailx -s 'testB' [email protected]"
непосредственно в оболочке Ubuntu я могу получать почту с содержимым ** ™ **.
Может кто-нибудь помочь мне решить проблему, чтобы функция shell_exec могла отправлять почту с определенными символами.
$
[знак доллара] имеет особое значение в сценариях оболочки, поэтому вы не можете передать его в команде,
$res = shell_exec("echo '" . $stringA . "' | mailx -s 'testA' [email protected]");
и всегда лучше использовать escapeshellarg
чтобы избежать ваших аргументов следующим образом:
$res = shell_exec("echo '" . escapeshellarg($stringA) . "' | mailx -s 'testA' [email protected]");
Других решений пока нет …