Linux altında PHP mail () ile garip bir sorun

1 Cevap php

O "benim makinede çalışır" Bu böyledir. Bunun dışında benim makine, Windows ve Linux hedef çeşit.

Fikir mail() function böylece her şeyi kırma, MIME-Version ve Content-Type başlıklar arasında satırbaşı koyar olmasıdır. Burada mümkün olduğunca simpliefied kodu bulunuyor:

<?php
		$HTMLPart = chunk_split(base64_encode('<html><body style="color: red">Test.</body></html>'));
		$PlaintextPart = chunk_split(base64_encode('>>> TEST <<<'));

$Headers     =<<<AKAM
From: "My Test" <my@mail.com>
Reply-To: my@mail.com
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="9-1410065408-1410065408=:27514"
AKAM;

$Body        =<<<AKAM
This is a multi-part message in MIME format.

--9-1410065408-1410065408=:27514
Content-Type: text/plain; charset="windows-1252"
Content-Transfer-Encoding: base64

$PlaintextPart
--9-1410065408-1410065408=:27514
Content-Type: text/html; charset="windows-1252"
Content-Transfer-Encoding: base64

$HTMLPart
--9-1410065408-1410065408=:27514--
AKAM;
	echo 'Try 3: ';
	echo mail('your@mail.com', 'Testmail', $Body, $Headers) ? 'WIN' : 'FAIL';
?>

1 Cevap

Muhtemelen orada bir satırbaşı ve bir satır besleme var. , Windows satırları sona erdirmek için CR + LF kullanır, ancak Linux tek başına bir satır besleme kullanır.