HTML, отправленный через функцию mail mail (), неправильно отображается в почте - PullRequest
0 голосов
/ 03 мая 2018

Я настроил mail() функцию, которая довольно проста в PHP:

$to = $_POST['address_to_send'];
$subject = "New Message";
$message = $_POST['content_to_send'];
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: me@example.com" . "\r\n";

echo $message;
mail($to,$subject,$message,$headers);

echo показывает мой прекрасный отформатированный HTML именно так, как я хочу, и отправляет электронное письмо, как ожидается, на правильный адрес с правильной темой и правильным адресом.

Тем не менее, фактическое содержание письма пустое ???

Контент генерируется с использованием PHP, но не думайте, что это должно иметь значение, поскольку echo показывает только правильно отформатированный HTML.

Любая помощь или предложения с этим будет принята с благодарностью.

/ --------- --------- EDIT \

Хорошо, поэтому после тестирования echo работает только локально на WAMP и не работает на моем сервере.

Попытался использовать var_dump() вместо этого, чтобы попытаться выяснить, что происходит, и хотя в WAMP он выдает мою строку, он пуст, когда он находится на сервере.

Так что я думаю, что это связано с тем, как я запускаю функцию почты.

У меня есть такая форма (генерируется в PHP):

<form action='purchase_orders.php?id=$order_id' method='POST'>
<button onclick='send_po($i)'>Send to $email</button><br />
<input type='hidden' id='po_content_to_send' name='po_content_to_send'>
<input type='hidden' id='po_address_to_send' name='po_address_to_send' value='$email'>
</form>

В JS запускается следующая функция:

function send_po(po){
    var po_to_send = document.getElementById('purchase_order_'+po).innerHTML;
    document.getElementById('po_content_to_send').value = po_to_send;
    this.form.submit();
}

Это добавляет содержимое рассматриваемого DIV к скрытому вводу перед отправкой формы, которая должна вызвать это PHP:

if(isset($_POST['po_content_to_send']) && isset($_POST['po_address_to_send'])){
    $to = $_POST['po_address_to_send'];
    $subject = "New Purchase Order";
    $message = $_POST['po_content_to_send'];
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
    $headers .= "From: me@example.com" . "\r\n";
    var_dump($message);
    //mail($to,$subject,$message,$headers);
}

1 Ответ

0 голосов
/ 03 мая 2018

Мне нужно было return false; для моей кнопки, которую она отправляла до того, как значение могло быть заполнено JS.

...