2012-01-09 19 views
5

Şirketim üzerinde bir isim, telefon numarası ve yorumlar (ve diğer birkaç şey) alan bir formum var. Yorumlar kutusu 5000 karaktere kadar yazmanıza izin verir - çok ayrıntılı müşterilere izin vermek için büyük bir sınır. Geçerli bir formun içeriği, satış formumuza php form postası kullanılarak düz metinli bir e-posta olarak gönderilir.PHP - Form posta ekleme! ve uzun dizelere bölünmüş satırlar

Bazı nedenlerle, Yorumlar yaklaşık 1000 karakterden uzunsa, bunların bir ünlem işareti, bir satır sonu ve bazen girilen bir girintiye sahip olması gerekir. Bu, yalnızca e-posta için geçerlidir; formda bir hata varsa, veriler forma eklenir ve hatalar işaretlenir ve yorumlar henüz ünlem işareti + satır sonu içermez.

Bu soruna neden olan yaklaşık 990 karakterden oluşan bir karakter sınırlaması olduğunu öne süren bir forum yazısı buldum.

Nedenini bilen var mı? Bunun için oldukça kolay bir düzeltme olduğunu bilen var mı?

İlgili PHP kodu: Bir e-postanın bir çizgi karakter sayısı için bir sınır

$to = $email; 

$subject = "Website Order Received: $offer"; 

$contents = " 
Order Form Received -\n 
Name: $name\n 
Company: $company\n 
Email: $email\n 
Phone: $phone $phoneExt\n 
Order Contents:\n" . 
($offer == 'web-demo' ? "- I want a live software demonstration.\n" : "") . 
($offer == 'pricing' ? "- I'd like pricing information.\n" : "") . 
($offer == 'holiday-pricing' ? "- I'd like to sign up before December 31st for the special holiday offer!\n" : "") . 
($offer == 'bid-help' ? "- Please give me marketing materials and other assistance for winning bids.\n" : "") . 
($offer == 'demo-cd' ? "- Send me the full-version demonstration CD.\n" : ""); 
if (!empty ($comments)) { 
    $comments = str_replace(" 
", "\n", $comments); // Preserves line breaks in the comments. 
    $contents = $contents."\nComments: $comments\n\n"; 
} 
$contents = str_replace("\n", "\r\n", $contents); 

mail($to, $subject, $contents); 
+0

İncelememiz için posta gönderen PHP betikiniz var mı? –

cevap

7

yok:

iki sınır vardır o karakter sayısı bu standart yerler çizgide. Her bir karakter satırı, en fazla 998 karakterden oluşmalı ve CRLF hariç, en fazla 78 karakter olmalıdır.

Her durumda
$contents = wordwrap($contents); 
$contents = str_replace("\n", "\r\n", $contents); 

$contents = str_replace("\n", "\r\n", $contents); 

, bu da onları standartlara uyumlu hale yanı sıra, komut ile gönderilen e-postaların okunabilirliği artıracak: (RFC 2882)

Sen bunu başarmak için PHP fonksiyonunu wordwrap kullanabilirsiniz .

+1

Şaşırıyorum, form postaları otomatik olarak/varsayılan olarak yapmıyor ... –