Я пытался провести свое исследование, есть только множество способов вызова команд оболочки и еще больше способов убрать вредные символы, которые я собираюсь использовать в stackoverflow по лучшей рекомендации эксперта.
Я былв надежде найти что-то похожее на то, что я видел в других языках, поэтому отправка аргументов команде фактически передается через функцию, например:
do_command ("ls", "-l", $ Directory);
и он позаботится о чем-либо вредном для вас в переменной $ Directory.Я не совсем нашел это с PHP.
Вот код, с которым я работаю:
<?php
session_start();
$AdminEmail = "random_email@gmail.com";
$CatalogEmails = array("");
$QuoteEmails = array("");
$PartsEmails = array("");
$Subject = $_SESSION['Email_Subject'];
$Body = $_SESSION['Email_Body'];
$Headers = $_SESSION['Email_Headers'];
$Type = $_SESSION['Type'];
msmtp($AdminEmail, $Subject, $Body, $Headers, "meyers");
if ($Type == "Catalog") {
foreach ($CatalogEmails as $AdditionalEmail) {
msmtp($AdditionalEmail, $Subject, $Body, $Headers, "meyers");
}
} else if ($Type == "Quote") {
foreach ($QuoteEmails as $AdditionalEmail) {
msmtp($AdditionalEmail, $Subject, $Body, $Headers, "meyers");
}
} else if ($Type == "Parts") {
foreach ($PartsEmails as $AdditionalEmail) {
msmtp($AdditionalEmail, $Subject, $Body, $Headers, "meyers");
}
}
function msmtp($To, $Subject, $Body, $Headers, $Account) {
$Email = "To: $To\nSubject: $Subject\n$Headers\n\n$Body\n";
exec("echo \"$Email\" | msmtp --account=$Account $To");
}
session_destroy();
?>
Я знаю, что есть встроенная функция почты PHP, которая в значительной степени потребовала быЭто важно, но я использую несколько SMTP-серверов, и msmtp
- это программа, которую я использую, которая отправляет электронные письма на основании «учетной записи», под которой будет отправляться электронное письмо.В этом случае это будет учетная запись «meyers».
Все переменные сеанса содержат HTML (<br>
<b>
и т. Д.), А также некоторые $_POST
переменные.Я использую PHP 5.3, поэтому никаких магических кавычек.
Я знаю, что использование эха - ужасный путь, поэтому я перехожу к stackoverflow.Моя цель заключается в том, чтобы электронное письмо проходило, несмотря на то, что на меня бросали сумасшедшие персонажи.Я знаю, что оболочка / bash привередлива - я предполагаю, что это намного больше, чем просто избегать двойных кавычек.
Я пытался использовать escapeshellcmd
escapeshellarg
и htmlentities
, они все слишком много избегают или портятHTML в электронном письме.