entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Crear un archivo .eml cuando ejecutas la función mail() en PHP

El problema del otro día, el de generar archivos eml de los correos en un inbox ha cambiado sustancialmente. El requerimiento es el de generar un archivo .eml cuando ejecutas la función mail() de PHP. Es decir, cuando generas el correo en PHP crear un archivo .eml para guardar de forma física ese correo electrónico en una carpeta concreta. He intentado crear de forma bruta un archivo .eml y escribir en él la misma información que contiene el correo electrónico, sin embargo, parece ser que los correos electrónicos contienen algún tipo de codificación que hace que cuando abro el correo generado por mi no se vea nada.

Alguien tiene alguna idea?

1 Respuesta

1voto

Leonardo-Tadei Puntos227020

Hola @ankeorum,

acá hay un brevísimo instructivo sobre cómo generar un EML
http://www.adminhelpline.com/en/free-scripts/php/files-and-folders/how-to-generate-eml-email-file-with-php

El formato es, básicamente, un archivo de texto que internamente está codificado base64 como un multipart MIME.

Las funciones de PHP imap_* implementan la codificación y elk manejo de los tipos MIME.

Al final del proceso debería quedarte un archivo de texto, que guardarías como .eml en el disco.

Si es solo guardar datos de un formulario, el resultado podría ser contenido texto plano o a lo sumo HTML, con lo que solo tendrías que definir el tipo de contenido correcto y poco más. Si los mails permiten ajuntos, ahí si tendrías que generar un multapart codificado...

Cómo alternativa, podrías generar archivos MBOX que son un poco más simples, y también los abre un cliente de correo.

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta