Ben yeni hatları ile sorunlar karşısında geliyorum PHP mail()
işlevini kullanarak e-postalar göndermek için bir komut dosyası oluştururken. Unix sistemleri üzerinde PHP [(4)] başlıkları the docs, sendmail daha sonra doğru {bu değiştirir söylediklerine rağmen, bir LF
karakteri ile ayrılmış olmasını bekliyoruz }. Sağlanan Ancak Windows üzerinde mesaj ve başlıkları gönderilir. Bu, long running PHP bug report 'de tarif edilmiştir.
Yani sistem kullanın LF
ve Windows üzerinde CRLF
kullanmak için sendmail Unix sürümünü çalıştıran olup olmadığını tespiti için bir yöntem gerekir. I PHP_EOL
farkında değilim ama bu işleme daha şık bir yolu olup olmadığını merak ediyorum.
Böylece gibi dokümanlar, tarafından belirtildiği gibi şu anda ben, benim mesajı inşa ediyorum.
<?php
$to = "example@website.com";
$subject = "Email Subject Here";
$message = "Hello this is a plaintext\n message with a line break.";
$headers = array(
"From: webmaster@example.com",
"Reply-To: webmaster@example.com",
"X-Mailer: PHP/" . phpversion()
);
$success = mail($to, $subject, $message, join("\r\n", $headers));
if ($success) {
echo "Mail Sent\n";
} else {
echo "Mail Failed\n";
}
Unix sistemlerinde bu sendmail (\r
ve \n
metinsel temsilleri yerini almış) gönderilen aşağıdaki iletide sonuçları:
To: example@website.comLF
Subject: Email Subject HereLF
X-PHP-Originating-Script: 501:mail.phpLF
From: webmaster@example.comCRLF
Reply-To: webmaster@example.comCRLF
X-Mailer: PHP/5.3.1LF
LF
Hello this is a plaintextLF
message with a line break.LF
Buna geçirildiğinde, sendmail, tüm LF
CRLF
çift döner taşıma ile sonuçlanan değiştirilir. Bazı posta sunucuları daha sonra CRLF
Bu durumda sonra From:
, şimdi mesajın parçası olan ek bir satır sonu ve bütün başlıklar ile sonuçlanan bu ek CR
olarak değiştirin vücut.
Hatalı hat bir yan konudur biten, ama yine de can sıkıcı olan PHP actually inserts the – Actually a PHP 5.3 bug, now fixed.X-PHP-Originating-Script
başlık.
Herhangi Bu çapraz platform işleme ideal yolunda fikir?
Teşekkürler,
Aron