Postfix e-posta başlıklarını vidalama!

3 Cevap php

Ben kar leoparı bir yerel dev ortamı kurdum ve benim isp posta sunucusu üzerinden e-posta göndermek için postfix'i kurdunuz.

Sonunda çok hayal kırıklığı sonra işe postfix'i var, ama şimdi benim e-postalar göndermek başlık bilgileri tıkalı olduğunu!

Ben şu php kodu kullanıyorum:

$email = "me@mydomain";
$subject = "Email tester";
$body = "Simple test";
$header = "From: me@mydomain \r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);

echo "message sent!";

To: ve Konu:! Onlar başlığında, gerektiği, ancak e-posta gövdesinde kalan ekran gibi başlıkları görüntüler. Bu e-posta istemcisi boş gelen bir alan gibi görünmesini sağlar.

Php scriptler, bazı çok basit çeşitli denedim, ama aynı şey, başlıklar her zaman e-posta gövdesinde görüntüleniyor.

Ben bir sonek sorun olabilir düşünüyorum, ama emin değilim, kimse daha önce bu tür bir sorunu karşılaştı?

3 Cevap

* Ek_başlıklar Kullanım PHP_EOL yerine \ r \ n *, sizin örnekte yani $ başlık. PHP_EOL üzerinde çalışan işletim sistemi için buna yeni satır değiştirecektir.

Also, message should contain LN only i.e. \n. This is accordingly to PHP documentation. Each line should be separated with a LF (\n). Lines should not be larger than 70 characters.

Eğer komut kriterleri hem karşılamak emin olun - bunu başarmak için çalıştım ve nihayet Postfix varsayılan yapılandırma ile çalışma var.

Bu neredeyse% 100 değil Postfix sorun, ancak kod neden bir şeydir. Boş bir CRLF Başlıklardan sonra görülür kez vücut başlar.

Bu e-posta gövde metnini dökümü ve yanlışlıkla fazladan CRLF'yi tanıtan değilseniz görmelisiniz.

Ayrıca bu sorunu araştırıyor (ben sırf bunun komut çok geliştirmek istemiyordu temelde çünkü), şimdiye kadar sabit değildir PHP ve Postfix geliştiriciler arasında güçlü bir çatışma olduğunu noktaya geldim. Sen geniş bilgi buradan okuyabilirsiniz:

http://www.mail-archive.com/postfix-users@postfix.org/msg03226.html

Postfix expects EOL to be LF when picking up mail from sendmail on unix and replaces that with CRLF when sending. When it gets CRLF it still replaces the LF and we get CRCRLF.

Bu kırık başlıklarını açıklıyor. Bunu çözmek için, tam olarak Postfix ve PHP / posta sistemi nasıl çalıştığını bilmeniz gerekir. Eğer yukarıda anlatılan gibi sorunlar yaşıyorsanız, bunun yerine "\ r \ n" "\ n" kullanabilirsiniz. Hem Windows / Unix üzerinde çalıştırabilir karmaşık bir sistem programı, sadece $ eeol = "\ r \ n" gibi bir ekstra param tanıtmak; yerine konacak olan doğrudan "\ r \ n" etiketi ve bu şekilde kolayca herhangi bir sistem için yapılandırılmış olabilir.

Ben Postfix yazar önerir yaklaşım olduğunu varsayalım:

It would be really good if PHP application programmers formatted email messages in a consistent manner. For example, they could use a variable that contains the END-OF-LINE terminator, instead of hard-coding LF or CRLF line terminators all over the place.