2012-01-09 11 views
5

Tengo un formulario en el sitio de mi empresa que incluye un nombre, número de teléfono y comentarios (y un par de cosas más). El cuadro de comentarios le permite escribir hasta 5000 caracteres, un límite grande para permitir clientes muy detallados. Un formulario válido tiene su contenido enviado usando php form mail como un correo electrónico de texto plano a nuestro departamento de ventas.PHP - ¡Inserción de correos electrónicos! y salto de línea en cadenas largas

Por alguna razón, si los Comentarios tienen más de 1000 caracteres, tendrán un signo de exclamación, un salto de línea y, a veces, una sangría. Esto se aplica únicamente al correo electrónico; si el formulario tiene un error, los datos se insertan en el formulario y los errores se marcan, y los comentarios aún no tienen los signos de exclamación + saltos de línea.

Encontré una publicación en el foro al respecto que sugiere que hay un límite de caracteres de unos 990 caracteres que conduce a este problema.

¿Alguien sabe la causa? ¿Alguien sabe una solución bastante fácil para esto?

Relevante código PHP:

$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

¿Tiene el script PHP que envía el correo para que lo inspeccionamos? –

Respuesta

7

Hay un límite en el número de caracteres en una línea de un correo electrónico:

Hay dos límites que estos lugares estándar en el número de caracteres en una línea. Cada línea de caracteres DEBE tener no más de 998 caracteres, y DEBERÍA tener no más de 78 caracteres, excluyendo el CRLF. (RFC 2882)

Usted puede utilizar la función de PHP wordwrap para lograrlo:

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

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

En cualquier caso, esto mejorará la legibilidad de los mensajes de correo electrónico enviados con la secuencia de comandos, así como haciéndolos compatible con los estándares .

+1

Me sorprende que el correo del formulario no lo haga automáticamente/de forma predeterminada ... –

Cuestiones relacionadas