Funkcja php mail stały tekst html ze zmiennymi

0

Witam. Mam taki scrypt do wysyłania wiadomości poprzez funkcję mail()

<?php
if (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
$message = "

<span> Skorzystaj sie $_POST[tresc]</span></a>
<br />xxxx <br />xxx<br />xxx    <br />800 200 900            <br /><a href="mailto:xxx">xxxxx</a>

 <h1 asd </h1> ści:\n\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
$headers  = 'MIME-Version: 1.0' . "r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-2' . "r\n"; //lub utf-8 itd.
$maill ="$_POST[email]";
@mail("$maill","Wiadomość ze strony WWW","$message","$headers")
or die('Nie udało się wysłać wiadomości');
echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
}
else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
?>

Jestem świeży w temacie, robię własną stronę WWW. Chciał bym wstawić stały html w formularzu i w odpowiednich miejscach wpisać do niego zmienne pobierane ze strony która wysyła formularz. Niby wszystko działa ale tylko po wpisaniu prostego html np

xx

wtedy wiadomośc się wysyła, jak zrobię jakiś bardziej zaawansowany wpis html formularz w ogóle się nie wysyła ani nie zwraca żadnego błędu. Po prostu wywala białą stronę. Wszystko działa poprawnie tylko wtedy gdy wpiszę zaawanswany tekst html i wyślę go poprzez formularz ale w takim przypadku nie mogę użyć zmiennych pobranych właśnie z tego formularza. Ma ktoś jakiś pomysł jak by to rozwiązać ?</p>
0

Nie używaj funkcji mail, tylko biblioteki PHPMailer. To po pierwsze i najważniejsze.

Po drugie zarówno PHPMailer, jak i funkcja mail domyślnie traktują to co wysyłasz jako plain text. Korzystając z biblioteki PHPMailer musisz dodać $mailer->isHTML(true) i wtedy zadziała. Minimalne demo:

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

// konfiguracja dla konta na gmail. Z tego konta będa wysyłane maile, więc sobie jakies utwórz :)
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = "yourpassword";

$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress('[email protected]', 'Joe User');

// żeby zadziałał HTML w treści emaila
$mail->isHTML(true);

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1