Llamar al sistema de correo a través de PHP
En este tutorial aprenderás sobre los parámetros de BlueSMTPMail() y BlueFormSend(), configurarás el envío interno o externo y descubrirás cómo se manejan los archivos adjuntos, contenidos HTML y los registros de envío.
Objetivo del tutorial
Nota: Este tutorial está dirigido a desarrolladores y muestra cómo se puede llamar al sistema de correo integrado del CMS bluetronix directamente a través de PHP.
El CMS bluetronix proporciona funciones PHP centrales para el envío de correos electrónicos.
De este modo, no es necesario programar nuevamente conexiones SMTP, cuentas de correo y funciones básicas de envío para cada script PHP propio.
La siguiente función está disponible para el envío directo de correos electrónicos y boletines informativos:
BlueSMTPMail($MailType,$MailAccount,$SMTPType,$From,$To,$NewsletterTo,$Subject,$TextContent,$HTMLContent,$Attachments,$EmbedImages,$MailPlaceholderReplacement,$FormEntry);
Para el envío de correos electrónicos de formularios, además, está disponible la siguiente función:
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
BlueSMTPMail()
Con BlueSMTPMail() se pueden enviar correos electrónicos normales y boletines a través del sistema de correo central del CMS bluetronix.
La llamada a la función es:
BlueSMTPMail(
$MailType,
$MailAccount,
$SMTPType,
$From,
$To,
$NewsletterTo,
$Subject,
$TextContent,
$HTMLContent,
$Attachments,
$EmbedImages,
$MailPlaceholderReplacement,
$FormEntry
);
$MailType
Determina qué tipo de correo electrónico se debe enviar.
Valores posibles:
Mail
Newsletter
Ejemplo:
$MailType = "Mail";
o:
$MailType = "Newsletter";
$MailAccount
$MailAccount determina la cuenta de correo cuyos ajustes SMTP se utilizarán.
A través de este valor se cargan los datos de configuración SMTP correspondientes desde las tablas de la base de datos del CMS.
La configuración utilizada también depende de $SMTPType.
$SMTPType
Determina si se utiliza una cuenta de correo interna o externa.
Valores posibles:
Intern
Extern
Interna
En:
$SMTPType = "Intern";
se utiliza una cuenta de correo que ha sido configurada directamente en el CMS bluetronix.
Las cuentas se encuentran en:
Email → Accounts
La dirección del remitente utilizada en $From debe estar presente allí como cuenta.
Externa
En:
$SMTPType = "Extern";
se utilizan datos de acceso SMTP externos.
Estos se gestionan en el CMS en:
Email → Server - Extern
La dirección del remitente utilizada en $From debe estar configurada adecuadamente allí.
La dirección del remitente utilizada en $From debe estar configurada adecuadamente.
$From
Contiene la dirección de correo electrónico del remitente.
Ejemplo:
$From = "info@example.com";
La dirección de correo electrónico debe coincidir con la configuración SMTP elegida.
$To
Contiene la dirección de correo electrónico del destinatario de un correo electrónico normal.
Ejemplo:
$To = "customer@example.com";
En un envío de correo normal, esta variable se utiliza como destinatario.
$NewsletterTo
$NewsletterTo se utiliza en el envío de boletines.
La variable contiene varias direcciones de correo electrónico como texto. Cada dirección de correo electrónico se separa por un salto de línea.
Ejemplo:
$NewsletterTo = "customer1@example.com\ncustomer2@example.com\ncustomer3@example.com";
$Subject
Contiene el asunto del correo electrónico.
Ejemplo:
$Subject = "Welcome to our website";
$TextContent
Contiene la parte de texto plano del correo electrónico.
Esta parte puede ser utilizada, por ejemplo, por programas de correo electrónico que no muestran correos HTML.
Ejemplo:
$TextContent = "Thank you for your request.";
$HTMLContent
Contiene la parte HTML del correo electrónico.
Ejemplo:
$HTMLContent = "<h1>Thank you</h1><p>Thank you for your request.</p>";
Esto permite enviar correos electrónicos formateados con encabezados, textos, enlaces, imágenes y otros elementos HTML.
$Attachments
Con $Attachments se pueden adjuntar archivos al correo electrónico.
Los archivos se especifican a través de su ruta dentro de la página web.
Ejemplo:
$Attachments = "/bx_doc/Intro.pdf";
Con varios adjuntos, las rutas de los archivos individuales se separan por un salto de línea.
Ejemplo:
$Attachments = "/bx_doc/Intro.pdf\n/bx_doc/PriceList.pdf";
$EmbedImages
Con $EmbedImages se puede determinar si las imágenes deben estar incrustadas directamente en el correo electrónico.
Ejemplo:
$EmbedImages = "ja";
Con la opción activada, las imágenes utilizadas dentro del correo HTML se integran directamente en el correo y no se cargan exclusivamente a través de URL externas.
De esta manera, las imágenes pueden estar disponibles directamente en el correo para el destinatario, sin necesidad de ser cargadas previamente desde el servidor web.
$MailPlaceholderReplacement
Con $MailPlaceholderReplacement se pueden reemplazar los marcadores dentro de:
$TextContent
$HTMLContent
por valores individuales.
El principio es:
Search
↓
Replace
De esta forma, se pueden generar contenidos personalizados dentro de un correo electrónico.
Las aplicaciones típicas son:
- Name des Empfängers
- Kundennummer
- Bestellnummer
- individuelle Links
- weitere dynamische Inhalte
$FormEntry
Con $FormEntry se puede determinar si el envío también debe guardarse en el archivo del formulario.
En:
$FormEntry = "JA";
se añade una entrada adicional en la tabla de la base de datos:
00_form
guardado.
Esto permite documentar el envío simultáneamente como un artículo de formulario o archivo.
Ejemplo: Enviar un correo electrónico normal
El siguiente ejemplo envía un correo electrónico HTML y de texto normal a través de una cuenta de correo interna.
$MailType = "Mail";
$MailAccount = "info@example.com";
$SMTPType = "Intern";
$From = "info@example.com";
$To = "customer@example.com";
$NewsletterTo = "";
$Subject = "Your request";
$TextContent = "Thank you for your request.";
$HTMLContent = "<h1>Thank you</h1><p>Thank you for your request.</p>";
$Attachments = "/bx_doc/Intro.pdf";
$EmbedImages = "ja";
$MailPlaceholderReplacement = "";
$FormEntry = "NEIN";
BlueSMTPMail($MailType,$MailAccount,$SMTPType,$From,$To,$NewsletterTo,$Subject,$TextContent,$HTMLContent,$Attachments,$EmbedImages,$MailPlaceholderReplacement,$FormEntry);
El procedimiento es, de forma simplificada:
PHP
↓
BlueSMTPMail()
↓
internen Mail-Account laden
↓
SMTP-Verbindung verwenden
↓
E-Mail erzeugen
↓
E-Mail versenden
↓
MailCache-Eintrag erzeugen
Ejemplo: Enviar un boletín
Para un boletín, se establece $MailType en:
Newsletter
se establece.
Los destinatarios se pasan posteriormente a través de $NewsletterTo.
$MailType = "Newsletter";
$MailAccount = "newsletter@example.com";
$SMTPType = "Intern";
$From = "newsletter@example.com";
$To = "";
$NewsletterTo = "customer1@example.com\ncustomer2@example.com\ncustomer3@example.com";
$Subject = "Our latest news";
$TextContent = "Discover our latest news and products.";
$HTMLContent = "<h1>Our latest news</h1><p>Discover our latest news and products.</p>";
$Attachments = "";
$EmbedImages = "ja";
$MailPlaceholderReplacement = "";
$FormEntry = "NEIN";
BlueSMTPMail($MailType,$MailAccount,$SMTPType,$From,$To,$NewsletterTo,$Subject,$TextContent,$HTMLContent,$Attachments,$EmbedImages,$MailPlaceholderReplacement,$FormEntry);
Los destinatarios individuales del boletín se separan dentro de $NewsletterTo por saltos de línea.
Usar conexión SMTP externa
Si se va a utilizar un servidor de correo externo, se debe:
$SMTPType = "Extern";
se establece.
Los datos de acceso SMTP deben haber sido configurados previamente en:
Email → Server - Extern
se debe haber configurado.
Ejemplo:
$SMTPType = "Extern";
$From = "mail@external-domain.com";
$MailAccount = "mail@external-domain.com";
BlueFormSend()
Además del envío directo de correos electrónicos, está disponible la función:
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
disponible.
Esta función está destinada específicamente para el envío de correos electrónicos en conexión con formularios de CMS.
Las variables ya están completamente en inglés.
Parámetros de BlueFormSend()
| Variable | Uso |
|---|---|
$SMTPType |
Seleccionar envío SMTP interno o externo |
$SendMail |
Controla el envío de correos del formulario |
$SendSubject |
Asunto del correo electrónico del formulario |
$CopyToCustomer |
Controla si el cliente recibe una copia |
$TextToCustomer |
Texto para el mensaje al cliente |
$FormArchive |
Controla la archivación del formulario |
$FormID |
ID del formulario correspondiente |
$SendTo |
Destinatario del correo del formulario |
MailCache
Cada llamada a BlueSMTPMail() genera adicionalmente una entrada en la tabla de la base de datos:
00_MailCache
A través de esta tabla se puede controlar el estado del envío del correo.
Allí se puede, por ejemplo, verificar si un correo electrónico fue procesado o enviado con éxito.
Las entradas de MailCache se utilizan para:
1 Woche
guardado.
Flujo típico de envío de un correo
PHP-Skript
↓
BlueSMTPMail()
↓
MailType prüfen
↓
MailAccount auswählen
↓
SMTPType prüfen
↓
SMTP-Konfiguration laden
↓
Empfänger bestimmen
↓
Text- und HTML-Inhalt erstellen
↓
Platzhalter ersetzen
↓
Anhänge hinzufügen
↓
Bilder gegebenenfalls einbetten
↓
E-Mail versenden
↓
00_MailCache aktualisieren
↓
optional 00_form speichern
Resumen de los parámetros de BlueSMTPMail
| Variable | Significado |
|---|---|
$MailType |
Correo o boletín |
$MailAccount |
Cuenta de correo a utilizar |
$SMTPType |
Interno o externo |
$From |
Dirección del remitente |
$To |
Destinatario de un correo electrónico normal |
$NewsletterTo |
Destinatarios del boletín, separados por saltos de línea |
$Subject |
Asunto del correo electrónico |
$TextContent |
Parte de texto del correo electrónico |
$HTMLContent |
Parte HTML del correo electrónico |
$Attachments |
Rutas de archivo de los adjuntos |
$EmbedImages |
Incorporar imágenes directamente en el correo electrónico |
$MailPlaceholderReplacement |
Reemplazar marcadores de posición dentro del contenido del correo |
$FormEntry |
Generar entrada opcional en 00_form |
Zusammenfassung
El sistema de correo central del CMS bluetronix se puede invocar directamente desde código PHP propio.
Für normalen E-Mail- und Newsletter-Versand wird verwendet:
BlueSMTPMail($MailType,$MailAccount,$SMTPType,$From,$To,$NewsletterTo,$Subject,$TextContent,$HTMLContent,$Attachments,$EmbedImages,$MailPlaceholderReplacement,$FormEntry);
Para formularios de CMS, está disponible adicionalmente:
Interno
→ Email → Cuentas
o:
Cada envío de correo se registra adicionalmente a través:
Esto permite a los desarrolladores utilizar el sistema de correo existente del CMS bluetronix directamente desde sus propios scripts PHP, sin tener que implementar toda la lógica SMTP por sí mismos.
¿Qué funciones proporciona el sistema de correo central para PHP?
Para correos electrónicos normales y boletines, utilizas BlueSMTPMail(). Para el envío en relación con formularios de CMS, también está disponible BlueFormSend().
¿Dónde encuentro las cuentas de correo electrónico internas?
Las cuentas de correo internas se configuran en Email → Cuentas. Para su envío, establece $SMTPType en Interno. La dirección del remitente debe pertenecer a una cuenta configurada.
¿Cómo uso un servidor SMTP externo?
Configura los datos de acceso en Email → Servidor - Externo y utiliza $SMTPType = "Externo";. La dirección del remitente debe coincidir con la configuración elegida.
¿Cuál es la diferencia entre correo y boletín?
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
Die SMTP-Konfiguration kann entweder über:Intern → Correo → Cuentas o:
Extern
→ Email → Server - Extern
erfolgen.Cada envío de correo se realizará además a través de:
00_MailCache
protokolliert. Die entsprechenden Cache-Einträge bleiben eine Woche erhalten.De este modo, los desarrolladores pueden utilizar directamente el sistema de correo existente del CMS de bluetronix desde sus propios scripts PHP, sin tener que implementar toda la lógica SMTP ellos mismos.
Preguntas Frecuentes
lo que los clientes nos preguntan con frecuencia
¿Qué funciones proporciona el sistema de correo central para PHP?
Para correos electrónicos normales y boletines usas BlueSMTPMail(). Para el envío en conexión con formularios del CMS, además está disponible BlueFormSend().
¿Dónde encuentro las cuentas de correo internas?
Las cuentas de correo internas se configuran en Correo → Cuentas. Para su envío, estableces $SMTPType en Interno. La dirección del remitente debe pertenecer a una cuenta configurada.
¿Cómo uso un servidor SMTP externo?
Configura los datos de acceso en Correo → Servidor - Externo y utiliza $SMTPType = "Externo";. La dirección del remitente debe coincidir con la configuración elegida.
¿Cuál es la diferencia entre correo y boletín?
Con $MailType = "Correo"; se envía un correo electrónico normal, cuyos destinatarios están en $To. Para un boletín, estableces $MailType = "Boletín"; y pasas los destinatarios a través de $NewsletterTo.
¿Cómo paso múltiples destinatarios de un boletín?
Introduce las direcciones en $NewsletterTo y separa cada dirección de correo electrónico con un salto de línea.
¿Puedo enviar texto y HTML en el mismo correo?
Sí. El texto puro se encuentra en $TextContent, mientras que el mensaje HTML formateado se pasa a través de $HTMLContent.
¿Cómo añado archivos adjuntos a un correo?
A través de $Attachments pasas las rutas de archivos dentro del sitio web. Para múltiples archivos adjuntos, las rutas se separan mediante saltos de línea.
¿Cómo puedo incrustar imágenes directamente en un correo?
La plantilla utiliza para ello $EmbedImages = "sí";. Esto incrusta directamente las imágenes utilizadas en el mensaje HTML según la función CMS descrita.
¿Para qué se utiliza MailPlaceholderReplacement?
Esto te permite reemplazar marcadores en el contenido de texto y HTML por valores individuales, como nombres, números de pedido o enlaces personales. La plantilla describe el principio de búsqueda y reemplazo, pero no un formato de transmisión concreto.
¿Cómo archivo el envío adicionalmente como entrada de formulario?
Configura en BlueSMTPMail() el valor $FormEntry = "SÍ";. Según la plantilla, se guardará adicionalmente una entrada en 00_form.
¿Dónde puedo comprobar el estado del envío?
La plantilla describe para ello la tabla 00_MailCache. Las entradas de envío allí creadas se almacenarán durante una semana. Una entrada de procesamiento por sí sola no es una prueba adicional de la entrega al destinatario.
¿Cuándo debo usar BlueFormSend()?
BlueFormSend() está destinado al envío de correos electrónicos con formularios CMS. Entre los parámetros se incluyen el control de envío, el asunto, la copia para el cliente, el archivo del formulario y el ID del formulario.