2011-05-30 12 views
7

estoy usando la función PHP mail() para enviar correos con datos adjuntos. Por lo tanto, la fuente PHP contiene un límite para definir dónde comienza y termina el archivo adjunto.qué regla para crear un límite MIME (para archivos adjuntos de Correo)

Entonces la pregunta es: ¿hay alguna ruels para la creación de este límite MIME (exampt que son sólo letras y numbres están permitidos) Aún sé esta cuestión de forma ->What rules apply to MIME boundary? ¿Es necesario crear una forma límite de un HASH ? Debido a que el siguiente también funciona:

$headers .= "Content-Type: multipart/related; boundary=\"abc\""; 
[...] 
$msg .="--abc\n"; 
[...] 
$msg .= "--abc--\n\n"; 

¿Existe una razón, ¿por qué un límite MIME debe ser un valor único?

..i no se encontró ninguna información en Internet.

Gracias!

+0

No cree sus propios mensajes de mimo. Use PHPMailer o Swiftmailer para hacerlo por usted. –

+1

.. bien ... pero ¿por qué no? PHPMailer o Swiftmailer son herramientas de terceros, ¿no? –

+0

La función de correo de php hace lo mínimo posible mientras aún puede enviar correo. Es muy probable que todo lo que envíe con él se marque como spam debido a que faltan encabezados y otras cosas. –

Respuesta

3

Nada dice que los marcadores de límites tienen que ser hashes, pero DEBEN ser únicos. Piense en lo que sucedería si el texto real del correo electrónico que está insertando naturalmente contiene las palabras --abc-- en alguna parte.

Su correo electrónico sería algo como esto:

--abc-- <--actual boundary 
This is my email. There are many like it, but this one is mine. 
Now for some reason I'm going to put in a line that shouldn't be there 
--abc-- <--part of the email 
There it was. Did you see it? No, you didn't, because the mail client saw a boundary 
line and sliced it out. Because of this extra boundary, now the email has 2 sections, 
instead of 1. 
--abc-- <--actual boundary 

Entonces ... ¿Cómo es un cliente de correo para saber lo que es parte del correo electrónico y lo que es justo "gastos generales"? Es por eso que usa límites únicos.

Hashes es simplemente el método más fácil. Es poco probable que un mensaje de correo electrónico contenga su propio valor hash en el lugar exacto donde podría verse como un marcador de límite.

+1

Por lo tanto, no es importante generar un límite en cada ejecución. (que cuesta la potencia de la CPU). Es suficiente crear un hash largo para usar este hash para todos los correos. –

+1

No. Debe generar el hash cada vez. Nada dice que el hash no puede aparecer de forma natural en el cuerpo de otro correo electrónico. Este es el problema con la 'señalización en línea'. No importa cuán improbable sea que el marcador de límites aparezca de forma natural, nunca puede ser imposible. –

+0

No tengo claro cómo calcular un hash de los datos acotados es más eficiente que generar un límite pseudoaleatorio y solo buscar los datos acotados, dado lo eficientes que son las funciones modernas de búsqueda de cadenas.Y luego obtienes un límite que es realmente único, en vez de estadísticamente 'único' (ish). – Spike0xff

3

Los límites MIME deberían ser algo imposiblemente improbable que aparezca en el mensaje real del usuario. Los hashes son una buena opción porque son largos y únicos. La singularidad también hace que sea difícil para alguien confundir sus mensajes al descubrir qué límite utiliza e incluirlo en su mensaje. Sin embargo, no puedo encontrar ningún requisito de que los límites sean únicos, solo que toda la línea tenga menos de 70 caracteres.

+1

Si los límites no son únicos, puede afectar tener cadenas de correo o adjuntar correos electrónicos como datos adjuntos. – ThinkBonobo

+0

Los valores hashes no son únicos en este sentido. Un hash por definición es una función de varios a uno, por lo que, por definición, no es único en su dominio, en este caso los mensajes de correo. (Si fueran únicos, los usaríamos para obtener una compresión increíble, ¿verdad?) – Spike0xff

Cuestiones relacionadas