problema strano con PHP mail () sotto Linux
Domanda
Questo è il caso quando si "funziona sulla mia macchina". Se non fosse che la mia macchina è Windows, e l'obiettivo è una sorta di Linux.
L'idea è che la funzione mail()
mette un ritorno a capo tra le intestazioni MIME-Version
e Content-Type
, rompendo così il tutto. Ecco il codice, semplificato di quanto più possibile:
<?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';
?>
Soluzione
Probabilmente si dispone di un ritorno a capo e un avanzamento riga lì. Windows utilizza CR + LF per terminare le linee, ma Linux utilizza un avanzamento di riga da solo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow