Nomad MIME Mail (antes conocido como Nexus MIME Mail), es una clase para el manejo y envío de correos tipo MIME, con soporte para el envío por SMTP y Auth SMTP
Actualmente este clase soporta:
También soporta múltiples direcciones de correo de envío (to), con copia (cc) y con copia oculta (bcc), así como varias imágenes embebidas en HTML y varios adjuntos
Adjunto a esta clase y documentación se encuentra un archivo llamado 'nomad_mimemail.test.php' donde se encuentra un script con un ejemplo de envío de correo con Texto, HTML, Adjunto e Imágen Embebida enviado por vía SMTP.
Para usar Nomad MIME Mail es necesario declarar el objeto de la siguiente forma:
Texto Plano
Normalmente así es como funcionaría la función 'mail()' de PHP, sin embargo en esta versión se crea de forma un poco distinta ya que se envían las cabeceras y cuerpo del mensaje de tipo MIME
Texto y HTML
Ejemplo de envío de correo con Texto y HTML
Texto Plano + Adjuntos
Ejemplo para crear un correo con Texto plano y un adjunto. Se pueden agregar mas de un adjunto agregándolos con la función 'add_attachment'. Para más información, revisar la referencia de la función.
Texto Plano + HTML + Adjuntos
Ejemplo para crear un correo con Texto Plano, HTML y un adjunto. Se pueden agregar mas de un adjunto usando la función 'add_attachment'.
Texto Plano + HTML + Imagen Embebida
Ejemplo para crear un correo con HTML, texto plano y una Imagen Embebida. Para que la imagen embebida funcione, el archivo adjunto debe tener el mismo nombre que se indique en el tag 'IMG' del HTML del mensaje.
Texto Plano + HTML + Imagen Embebida + Adjunto
Ejemplo para crear un correo con HTML, texto plano, una Imagen Embebida y adjunto. Para que la imagen embebida funcione, el archivo_adjunto debe tener el mismo nombre que se indique en el tag 'IMG'
Envío por SMTP Autentificado
Para envíar el correo vía SMTP es necesario llamar a la función 'set_smtp_host' y para enviar el correo usando la auteticación del SMTP es necesario usar la función 'set_smtp_auth'.
Por el momento esta versión se encuentra en pruebas y agradeceré toda la ayuda posible para que esta clase soporte una gran cantidad de SMTP's. En caso de tener un error es posible revisar toda la conversación que hace este script con el SMTP. para ello antes del 'send' llamaremos a la función 'set_smtp_log' a true, y en el fallo podemos traer todo por medio de 'get_smtp_log' como a continuación se ejemplifica:
Si es el caso, le pido que deje su reporte en El Foro de esta clase en donde trataré de adaptar en lo posible las respuestas obtenidas del SMTP.
add_attachment | Agrega un archivo adjunto |
add_bcc | Agrega un correo con copia al carbón oculto |
add_cc | Agrega un correo con copia al carbón |
add_content_attachment | Agrega un archivo adjunto enviando directamente el contenido |
add_reply_to | Agrega un correo de respuesta |
add_to | Agrega un correo destino |
get_eml | Entrega el formato EML del correo |
get_smtp_log | Entrega la Conversación con el SMTP |
get_version | Entrega el numero de versión de esta clase |
new_mail | Crea un correo nuevo |
nomad_mimemail | Constructor |
send | Envía el correo MIME |
set_bcc | Establece un correo con copia al carbón oculto |
set_charset | Establece el juego de caracteres usados en el correo |
set_cc | Establece un correo con copia al carbón |
set_from | Establece el correo del remitente |
set_html | Establece el contenido del correo en HTML |
set_reply_to | Establece el correo de respuesta |
set_return_path | Establece el correo de retorno |
set_smtp_auth | Establece el nombre de usuario y contraseña para el envío por Auth SMTP |
set_smtp_host | Establece el host donde se enviará el correo por SMTP |
set_smtp_log | Estblece si se captura el log de conversación entre esta clase y el SMTP |
set_subject | Establece el asunto del correo |
set_text | Establece el contenido del correo texto plano |
set_to | Establece un correo destino |
bool add_attachment(string file, string name, [string type])
Descripción
Agrega un archivo adjunto al correo electrónico
En el parámetro 'file' se debe de proporcionar la ubicación (ruta y nombre) del archivo que se quiere adjuntar. Este método abre el archivo con fopen.
Cuando se hace el envío de un archivo por medio de un método POST, PHP inicializa una variable superglobal con información que puede ser usada directamente con este método. Por ejemplo:
$_FILES['userfile']['name'] es el nombre original del archivo
$_FILES['userfile']['type'] es el tipo mime del archivo proporcionado por el navegador
$_FILES['userfile']['tmp_name'] es la ubicación del archivo temporal almacenado
En el particular caso de necesitar embeber una imagen dentro de un correo, es necesario crear el "Tag" correspondiente en el HTML del mensaje haciendo la correcta referencia entre el "name" del archivo gráfico y su vínculo "src". Para mayor información puede revisar los ejemplos que acompañan a esta clase.
Parámetros
file
Ubicación del archivo que se quiere adjuntar
name
Nombre con el que se enviará el archivo
type
Typo MIME del archivo que se quiere adjuntar
Ejemplos
bool add_bcc(string mail_bcc, [string name])
Descripción
Agrega una dirección de correo como copia al carbón oculto a las ya existentes, la cual debe ser sintacticamente correcta devolviendo 'true' si se añade con éxito o 'false' en caso contrario. Opcionalmente se puede especificar un nombre de contacto.
Parámetros
mail_bcc
Correo electrónico del destinatario
name
Nombre o texto del contacto
Ejemplos
bool add_cc(string mail_cc, [string name])
Descripción
Agrega una dirección de correo como copia al carbón a las ya existentes, la cual debe ser sintácticamente correcta devolviendo 'true' si se añade con éxito o 'false' en caso contrario. Opcionalmente se puede especificar un nombre de contacto.
Parámetros
mail_cc
Correo electrónico del destinatario
name
Nombre o texto del contacto
Ejemplos
bool add_content_attachment(string content, string name, [string type])
Descripción
Agrega un archivo adjunto al correo electrónico pasando directamente el contenido. Esta función es especialmente útil cuando se generan contenidos directamente en código, como podría ser archivos xml, pdf, imagenes, etc. que se quiera adjuntar.
En el parámetro 'content' se debe pasar el contenido directo. A diferencia de 'add_attachment' en este método no se abrirá ningun archivo externo, ya que el contenido se pasa directamente.
En el particular caso de necesitar embeber una imagen dentro de un correo, es necesario crear el "Tag" correspondiente en el HTML del mensaje haciendo la correcta referencia entre el "name" del archivo gráfico y su vínculo "src". Para mayor información puede revisar los ejemplos que acompañan a esta clase.
Parámetros
content
Contenido a adjuntar como archivo
name
Nombre con el que se enviará el archivo
type
Typo MIME del archivo que se quiere adjuntar
Ejemplos
bool add_reply_to(string mail_reply_to, [string name])
Descripción
Agrega una dirección de correo electrónico al cual se responderá cuando el usuario pulse sobre su opcion de responder (reply) de su cliente de correo electronico.
Parámetros
mail_reply_to
Correo electrónico de Respuesta
name
Nombre o texto del contacto
Ejemplos
bool add_to(string mail_to, [string name])
Descripción
Agrega una dirección de correo destino a las ya existentes, la cual debe ser sintácticamente correcta devolviendo 'true' si se añade con éxito o 'false' en caso contrario. Opcionalmente se puede especificar un nombre de contacto.
Parámetros
mail_to
Correo electronico del destinatario
name
Nombre o texto del contacto
Ejemplos
string get_eml()
Descripción
Devuelve el contenido del correo formado en formato EML que puede servir para archivarlo en una base de datos o archivos de texto.
Ejemplos
string get_smtp_log()
Descripción
Devuelve el contenido de la conversación entre esta clase y el SMTP.
Para hacer uso de esta función es necesario establecer previamente la propiedad 'set_smtp_log' a 'true'. Esto es especialmente útil cuando se tiene algún problema con el envío por SMTP y se desea revisar todos los comandos enviados y las respuestas del servidor SMTP.
Ejemplos
string get_version()
Descripción
Devuelve el numero de versión de esta clase.
Ejemplos
void new_mail([string from], [string to], [string subject], [string text], [string html])
Descripción
Esta función es una vía rápida para borrar todas las variables generadas por un antiguo envío de correo sobre el mismo objeto y/o para asignar de forma rápida algunas de las opciones para el envío de un correo MIME
Todos los parámetros son opcionales
Parámetros
from
Correo electrónico del remitente
to
Correo electrónico del destinatario
subject
Asunto del correo
text
Mensaje en Texto Plano
html
Mensaje en HTML
Ejemplos
void nomad_mimemail()
Descripción
Este es el constructor de la clase
Parámetros
No tiene parámetros
Ejemplos
bool send()
Descripción
Envía el correo MIME con las características agregadas en la composición del mensaje.
Si el envío se ha realizado con éxito devuelve 'true' en caso contrario 'false'
Parámetros
No tiene parametros
Ejemplos
bool set_bcc(string mail_bcc, [string name])
Descripción
Establece una dirección de correo como copia al carbón oculta 'bcc', el cual debe ser sintácticamente correcto devolviendo 'true', en caso contrario devuelve 'false'. Opcionalmente se puede especificar un nombre de contacto
Nota: Este método borra cualquier correo o correos existentes anteriormente en la variable 'mail_bcc'
Parámetros
mail_bcc
Correo electrónico del destinatario
name
Nombre o texto del contacto
Ejemplos
void set_charset(string charset)
Descripción
Establece el juego de caracteres que será usado al momento de generar el correo electrónico
Parámetros
charset
Juego de Caracteres válido
Ejemplos
bool set_cc(string mail_cc, [string name])
Descripción
Establece una dirección de correo como copia al carbón 'cc', el cual debe ser sintácticamente correcto devolviendo 'true', en caso contrario devuelve 'false'. Opcionalmente se puede especificar un nombre de contacto
Nota: Este método borra cualquier correo o correos existentes anteriormente en la variable 'mail_cc'
Parámetros
mail_cc
Correo electrónico del destinatario
name
Nombre o texto del contacto
Ejemplos
void set_from(string mail_from, [string name])
Descripción
Establece la dirección de correo del remitente, el cual debe ser sintácticamente correcto. Opcionalmente se puede especificar un nombre de contacto
Parámetros
mail_from
Correo electrónico del remitente
name
Nombre o texto del contacto
Ejemplos
void set_html(string html)
Descripción
Establece el mensaje del correo en HTML
Parámetros
html
Mensaje en HTML
Ejemplos
bool set_reply_to(string mail_reply_to, [string name])
Descripción
Establece el correo electrónico al cual se responderá cuando el usuario pulse sobre su opcion de responder (reply) de su cliente de correo electronico.
Parámetros
mail_reply_to
Correo electrónico de Respuesta
name
Nombre o texto del contacto
Ejemplos
bool set_return_path(string mail_return_path)
Descripción
Establece la dirección del regreso de correo, en muchas ocaciones se usa para indicar a que correo se debe de enviar en caso de error o de no existir un correo destino.
Parámetros
mail_return_path
Correo electrónico del regreso del correo
Ejemplos
bool set_smtp_auth(string user, string pass)
Descripción
Establece el nombre de usuario y contraseña requerído por el servidor SMTP. Para que este Metodo funcione, es necesario llamar a 'set_smtp_host', en el cual se declara cual es el host que tiene el SMTP a utilizar.
Solo es necesario llamar a este método cuando se requiera usar SMTP con autentificación,
Parámetros
user
Nombre de usuario del SMTP con autenticación, en muchos casos el nombre de usuario es el correo.
pass
Contraseña de la cuenta de correo en el SMTP
Ejemplos
bool set_smtp_host(string host, [int port])
Descripción
Establece el host donde se conectará por SMTP para enviar el correo. Llamar a este método establece automáticamente que el correo se enviará vía SMTP.
En caso de no necesitar envíar el correo por SMTP, no es necesario llamar a este método, y dejar que el correo se envíe por la función 'mail' de PHP.
Si requiere de autenticación por SMTP deberá de llamar tambien a la función 'set_smtp_auth'
Parámetros
host
El nombre de dominio o IP a la que esta clase se conectará para enviar el correo.
port
Opcionalmente puede declarar el puerto a conectarse en el servidor, por defecto el puerto esta establecido al 25
Ejemplos
void set_smtp_log(bool log)
Descripción
Establece que se guarde toda la conversación entre esta clase y un SMTP, que despues podrá ser recuperador por medio de la función 'get_smtp_log'. Esto es especialmente útil cuando se tiene algún problema con el envío por SMTP y se desea revisar todos los comandos enviados y las respuestas del servidor SMTP.
Parámetros
log
Si se desea recuperar la conversación con el SMTP debe declararse en true. Se encuentra por defecto en 'false'.
Ejemplos
bool set_subject(string subject)
Descripción
Establece el asunto del correo
Parámetros
subject
Asunto del correo
Ejemplos
void set_text(string text)
Descripción
Establece el contenido del correo en texto plano
Parámetros
text
Mensaje en texto plano
Ejemplos
bool set_to(string mail_to, [string name])
Descripción
Establece una dirección de correo destino, el cual debe ser sintácticamente correcto y devuelve 'true', en caso contrario devuelve 'false'. Opcionalmente se puede especificar un nombre de contacto
Nota: Este método borra cualquier correo o correos existentes anteriormente en la variable 'mail_to'
Parámetros
mail_to
Correo electrónico del destinatario
name
Nombre o texto del contacto
Ejemplos
Versión 1.0
Versión 1.2
Versión 1.3
Versión 1.4
Versión 1.5
Versión 1.6
Agradecemos a las personas que han dado su apoyo y soporte para el desarrollo de esta clase.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA