Wysyłanie maila w postaci html za pomoca funkcji mail()

0

No więc tak napisałem prosty skrypt który by miał wysyłać maila w formie html aczkolwiek wysyła tylko pustą wiadomość kod wyglada nastepujaco
index.html:

<!DOCTYPE html>
<html>
<head>
	<title>Mail</title>
	<meta charset="UTF-8" />
	<link rel="stylesheet" type="text/css" href="Css/style.css">
</head>
<body>
	<form method="POST" action="mail.php">
		<table>
			<tr>
				Rezerwacja:
			</tr>	
			<tr>
				<td>
					Data Rezerwacji:
				</td>
				<td>
					<input type="text" name="data"><br/>
				</td>
			</tr>
			<tr>
				<td>
					Imie i Nazwisko:
				</td>
				<td>
					<input type="text" name="name"><br/>
				</td>
			</tr>
			<tr>
				<td>
					@:
				</td>
				<td>
					<input type="text" name="replayTo"><br/>
				</td>
			</tr>
			<tr>
				<td>

				</td>
				<td>
					<input type="submit" value="rezerwuj">
				</td>
			</tr>
		</table>
	</form>

</body>
</html>		
 

mail.php:

<?php
	extract($_POST);
	$headers = "From: $replayTo".PHP_EOL;
	$headers .= "MIME-Version: 1.0".PHP_EOL;
	$headers .= "Content-type: text/html; charset=iso-8859-2".PHP_EOL;
	$message = '
	<html>
		<head>
			<title>dsdsa<title>
		</head>
		<body>
			<table>
				<tr>
					<td>Imię i Nazwisko: </td>
					<td>'.$name.'
				</tr>
				<tr>
					<td>Data:</td>
					<td>'.$data.'</td>
				</tr>	
					<td>Email:</td>
					<td>'.$replayTo.'<td>
				</tr>
			</table>
		</body>
	</html>';

	$topic = "Rezerwacja: $data";

	if(mail("[email protected]","temat",$message,$headers))
	{
		echo "mail zostal wyslany";	
	}
	else
	{
		echo "mail nie zostal wyslany";
	}

?>

Co może być przyczyną z góry dzieki za odp :)

1

to pewnie dlatego ze w tej linii:

<td>'.$name.' 

brakuje zakonczenia </td>

poza tym nie uzywaj extract do posta, binduj recznie.

i uzywaj phpmailer, ktora zapewnia lepsza kontrole i wsparcie dla wysylania maili niz zwykly mail.

ps. dodaj jakiegos honeypota tam bo boty cie zjedza

0

Niestety dodanie </td> nic nie zmienia dalej te maile sa puste dodam ze gdy nie chcialem wysylac w formacie html wszystko wysylalo:P
a jak to bindowac ręcznie ? bo znam tylko taka metode:P

1

chodzilo mi o to zeby za kazdym razem sprawdzic, czy jest wartosc i czy ona jest taka jakiej oczekuje.

co do wysylania maili to skorzystaj z tego: http://phpedia.pl/wiki/Phpmailer

unikniesz recznego ustawiania naglowkow. Bedziesz je sobie ustawial (choc nie wtedy tymbardziej nie :D) jak ogarniesz bardziej php :)

0

ok użyłem phpmailera Ale dalej wysyła puste posty kod wyglada tak


<?php
	include 'PHPMailer.php';
	$name = $_POST['name'];
	$data = $_POST['data'];
	$replayTo = $_POST['replayTo'];
	$message = '
	<html>
		<head>
			<title>dsdsa<title>
		</head>
		<body>
			<table>
				<tr>
					<td>Imię i Nazwisko: </td>
					<td>'.$name.'</td>
				</tr>
				<tr>
					<td>Data:</td>
					<td>'.$data.'</td>
				</tr>	
				<tr>
					<td>Email:</td>
					<td>'.$replayTo.'<td>
				</tr>
			</table>
		</body>
	</html>';
	
	$topic = "Rezerwacja: $data";

	$mail = new PHPMailer();
	$mail->SetFrom($replayTo);
	$mail->AddAddress('[email protected]');
	$mail->Subject= $topic;
	$mail->AltBody = strip_tags($message);
	$mail->MsgHTML($message);
	if($mail->Send())
		echo "mail zostal wyslany";	
	else
		echo "mail nie zostal wyslany";
?>
 
0

Ok już mam rozwiazanie trzeba bylo dodać

$mail->ContentType="text/html";

i usunąć znaczniki <html> Dzieki wielkie za pomoc:)

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