Mail-systeem aanroepen via PHP
In deze tutorial leer je de parameters van BlueSMTPMail() en BlueFormSend() kennen, stel je interne of externe verzending in en ontdek je hoe bijlagen, HTML-inhoud en verzendprotocollen worden behandeld.
Doel van de tutorial
Opmerking: Deze tutorial is gericht op ontwikkelaars en toont aan hoe het geïntegreerde mail-systeem van het bluetronix CMS rechtstreeks via PHP kan worden aangeroepen.
Het bluetronix CMS biedt centrale PHP-functies voor het verzenden van e-mails.
Hierdoor hoeven SMTP-verbindingen, e-mailaccounts en basisverzendfuncties niet voor elk eigen PHP-script opnieuw te worden geprogrammeerd.
Voor het directe verzenden van e-mails en nieuwsbrieven is de volgende functie beschikbaar:
BlueSMTPMail($MailType,$MailAccount,$SMTPType,$From,$To,$NewsletterTo,$Subject,$TextContent,$HTMLContent,$Attachments,$EmbedImages,$MailPlaceholderReplacement,$FormEntry);
Voor het verzenden van formulier-e-mails is daarnaast de volgende functie beschikbaar:
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
BlueSMTPMail()
Met BlueSMTPMail() kunnen normale e-mails en nieuwsbrieven via het centrale mail-systeem van het bluetronix CMS worden verzonden.
De functieaanroep is als volgt:
BlueSMTPMail(
$MailType,
$MailAccount,
$SMTPType,
$From,
$To,
$NewsletterTo,
$Subject,
$TextContent,
$HTMLContent,
$Attachments,
$EmbedImages,
$MailPlaceholderReplacement,
$FormEntry
);
$MailType
Bepaalt welk type e-mail verzonden moet worden.
Mogelijke waarden:
Mail
Newsletter
Voorbeeld:
$MailType = "Mail";
of:
$MailType = "Newsletter";
$MailAccount
$MailAccount bepaalt het e-mailaccount waarvan de SMTP-instellingen worden gebruikt.
Met deze waarde worden de bijbehorende SMTP-configuratiegegevens uit de CMS-database tabellen geladen.
Welke configuratie wordt gebruikt, hangt bovendien af van $SMTPType.
$SMTPType
Bepaalt of een intern of extern e-mailaccount wordt gebruikt.
Mogelijke waarden:
Intern
Extern
Intern
Bij:
$SMTPType = "Intern";
wordt een e-mailaccount gebruikt dat rechtstreeks in het bluetronix CMS is ingesteld.
De accounts bevinden zich onder:
Email → Accounts
Het verzendadres dat onder $From wordt gebruikt, moet daar als account aanwezig zijn.
Extern
Bij:
$SMTPType = "Extern";
worden externe SMTP-toegang gegevens gebruikt.
Deze worden in het CMS onder:
Email → Server - Extern
beheerd.
Het verzendadres dat onder $From wordt gebruikt, moet daar dienovereenkomstig zijn ingesteld.
$From
Bevat het e-mailadres van de afzender.
Voorbeeld:
$From = "info@example.com";
Het e-mailadres moet overeenkomen met de gekozen SMTP-configuratie.
$To
Bevat het e-mailadres van de ontvanger van een normale e-mail.
Voorbeeld:
$To = "customer@example.com";
Bij een normale e-mailverzending wordt deze variabele als ontvanger gebruikt.
$NewsletterTo
$NewsletterTo wordt gebruikt bij de verzending van de nieuwsbrief.
De variabele bevat meerdere e-mailadressen als tekst. Elk e-mailadres wordt gescheiden door een regelovergang.
Voorbeeld:
$NewsletterTo = "customer1@example.com\ncustomer2@example.com\ncustomer3@example.com";
$Subject
Bevat het onderwerp van de e-mail.
Voorbeeld:
$Subject = "Welcome to our website";
$TextContent
Bevat het platte tekstgedeelte van de e-mail.
Dit gedeelte kan bijvoorbeeld worden gebruikt door e-mailprogramma's die geen HTML-e-mails weergeven.
Voorbeeld:
$TextContent = "Thank you for your request.";
$HTMLContent
Bevat het HTML-gedeelte van de e-mail.
Voorbeeld:
$HTMLContent = "<h1>Thank you</h1><p>Thank you for your request.</p>";
Hiermee kunnen opgemaakte e-mails met koppen, teksten, links, afbeeldingen en andere HTML-elementen worden verzonden.
$Attachments
Met $Attachments kunnen bestanden aan de e-mail worden toegevoegd.
De bestanden worden opgegeven via hun pad binnen de website.
Voorbeeld:
$Attachments = "/bx_doc/Intro.pdf";
Bij meerdere bijlagen worden de afzonderlijke bestandslocaties gescheiden door een regelovergang.
Voorbeeld:
$Attachments = "/bx_doc/Intro.pdf\n/bx_doc/PriceList.pdf";
$EmbedImages
Met $EmbedImages kan worden bepaald of afbeeldingen direct in de e-mail moeten worden ingebed.
Voorbeeld:
$EmbedImages = "ja";
Bij geactiveerde optie worden de in de HTML-e-mail gebruikte afbeeldingen direct in de e-mail geïntegreerd en niet uitsluitend via externe URL's geladen.
Hierdoor kunnen de afbeeldingen bij de ontvanger direct binnen de e-mail beschikbaar zijn, zonder dat ze afzonderlijk van de webserver moeten worden geladen.
$MailPlaceholderReplacement
Met $MailPlaceholderReplacement kunnen place holders binnen:
$TextContent
$HTMLContent
worden vervangen door individuele waarden.
Het principe is:
Search
↓
Replace
Hierdoor kunnen bijvoorbeeld gepersonaliseerde inhoud binnen een e-mail worden gecreëerd.
Typische gebruiksmogelijkheden zijn:
- Name des Empfängers
- Kundennummer
- Bestellnummer
- individuelle Links
- weitere dynamische Inhalte
$FormEntry
Met $FormEntry kan worden bepaald of de verzending ook in het formulierarchief moet worden opgeslagen.
Bij:
$FormEntry = "JA";
wordt ook een vermelding in de database tabel:
00_form
opgeslagen.
Hierdoor kan de verzending tegelijkertijd als formulier- of archiefinvoer worden gedocumenteerd.
Voorbeeld: Normale e-mail verzenden
Het volgende voorbeeld verstuurt een normale HTML- en tekst-e-mail via een intern e-mailaccount.
$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);
De vereenvoudigde procedure is als volgt:
PHP
↓
BlueSMTPMail()
↓
internen Mail-Account laden
↓
SMTP-Verbindung verwenden
↓
E-Mail erzeugen
↓
E-Mail versenden
↓
MailCache-Eintrag erzeugen
Voorbeeld: Nieuwsbrief verzenden
Voor een nieuwsbrief wordt $MailType ingesteld op:
Newsletter
.
De ontvangers worden vervolgens doorgegeven via $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);
De afzonderlijke nieuwsbriefontvangers worden binnen $NewsletterTo door regelovergangen gescheiden.
Externe SMTP-verbinding gebruiken
Als een externe mailserver gebruikt moet worden, wordt ingesteld:
$SMTPType = "Extern";
.
De SMTP-inloggegevens moeten eerder zijn ingesteld onder:
Email → Server - Extern
. Verwacht.
Voorbeeld:
$SMTPType = "Extern";
$From = "mail@external-domain.com";
$MailAccount = "mail@external-domain.com";
BlueFormSend()
Naast de directe mailverzending is de functie beschikbaar:
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
.
Deze functie is speciaal bedoeld voor het verzenden van e-mails in combinatie met CMS-formulieren.
De variabelen zijn al volledig in het Engels geschreven.
Parameters van BlueFormSend()
| Variabele | Gebruik |
|---|---|
$SMTPType |
Kies interne of externe SMTP-verzending |
$SendMail |
Stuur de mailverzending van het formulier aan |
$SendSubject |
Onderwerp van de formulier-e-mail |
$CopyToCustomer |
Bepaalt of de klant een kopie ontvangt |
$TextToCustomer |
Tekst voor de boodschap aan de klant |
$FormArchive |
Beheert de archivering van het formulier |
$FormID |
ID van het betreffende formulier |
$SendTo |
Ontvanger van de formulier-e-mail |
MailCache
Elke aanroep van BlueSMTPMail() genereert bovendien een vermelding in de databanktafel:
00_MailCache
Via deze tabel kan de status van de e-mailverzending worden gecontroleerd.
Daar kan bijvoorbeeld worden gecontroleerd of een e-mail succesvol is verwerkt of verzonden.
De MailCache-invoer wordt gebruikt voor:
1 Woche
opgeslagen.
Typische workflow van een mailverzending
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
Overzicht van de BlueSMTPMail-parameters
| Variabele | Betekenis |
|---|---|
$MailType |
E-mail of nieuwsbrief |
$MailAccount |
Te gebruiken e-mailaccount |
$SMTPType |
Intern of extern |
$From |
Afzenderadres |
$To |
Ontvanger van een gewone e-mail |
$NewsletterTo |
Nieuwsbriefontvangers, gescheiden door regeleinden |
$Subject |
E-mail onderwerp |
$TextContent |
Tekstdeel van de e-mail |
$HTMLContent |
HTML-deel van de e-mail |
$Attachments |
Bestandspaden van de bijlagen |
$EmbedImages |
Afbeeldingen direct in de e-mail integreren |
$MailPlaceholderReplacement |
Plaatsvervangers binnen de mailinhoud vervangen |
$FormEntry |
Optionele invoer in 00_form aanmaken |
Zusammenfassung
Het centrale mailsysteem van het bluetronix CMS kan direct vanuit eigen PHP-code worden aangeroepen.
Für normalen E-Mail- und Newsletter-Versand wird verwendet:
BlueSMTPMail($MailType,$MailAccount,$SMTPType,$From,$To,$NewsletterTo,$Subject,$TextContent,$HTMLContent,$Attachments,$EmbedImages,$MailPlaceholderReplacement,$FormEntry);
Voor CMS-formulieren is daarnaast beschikbaar:
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
Die SMTP-Konfiguration kann entweder über:
Intern
→ Email → Accounts
of:
Extern
→ Email → Server - Extern
erfolgen.
Elke e-mailverzending wordt ook gecontroleerd via:
00_MailCache
protokolliert. Die entsprechenden Cache-Einträge bleiben eine Woche erhalten.
Hiermee kunnen ontwikkelaars het reeds bestaande mailsysteem van het bluetronix CMS direct vanuit hun eigen PHP-scripts gebruiken, zonder de volledige SMTP-logica zelf te hoeven implementeren.
FAQ
wat klanten ons vaak vragen
Welke functies biedt het centrale mailsysteem voor PHP?
Voor normale e-mails en nieuwsbrieven gebruik je BlueSMTPMail(). Voor verzending in combinatie met CMS-formulieren is daarnaast BlueFormSend() beschikbaar.
Waar vind ik de interne e-mailaccounts?
Interne mailaccounts worden ingesteld onder Email → Accounts. Voor verzending stel je $SMTPType in op Intern. Het afzenderadres moet bij een ingesteld account horen.
Hoe gebruik ik een externe SMTP-server?
Stel de inloggegevens in onder Email → Server - Extern en gebruik $SMTPType = "Extern";. Het afzenderadres moet overeenkomen met de gekozen configuratie.
Wat is het verschil tussen mail en nieuwsbrief?
Met $MailType = "Mail"; wordt een normale e-mail verzonden, waarvan de ontvanger in $To staat. Voor een nieuwsbrief stel je $MailType = "Newsletter"; in en geef je de ontvangers door via $NewsletterTo.
Hoe geef ik meerdere nieuwsbriefontvangers door?
Vul de adressen in $NewsletterTo in en scheid elk e-mailadres met een nieuwe regel.
Kan ik tekst en HTML in dezelfde e-mail verzenden?
Ja. De platte tekst staat in $TextContent, terwijl je de opgemaakte HTML-bericht doorgeeft via $HTMLContent.
Hoe voeg ik bijlagen aan een e-mail toe?
Via $Attachments geef je pad naar bestanden binnen de website door. Bij meerdere bijlagen worden de paden gescheiden door nieuwe regels.
Hoe kan ik afbeeldingen direct in een e-mail insluiten?
De sjabloon gebruikt hiervoor $EmbedImages = "ja";. Hiermee worden de afbeeldingen die binnen de HTML-bericht worden gebruikt direct ingesloten volgens de beschreven CMS-functie.
Waarvoor wordt MailPlaceholderReplacement gebruikt?
Hiermee kun je plaatsen in de tekst- en HTML-inhoud vervangen door individuele waarden, bijvoorbeeld voor namen, bestelnummers of persoonlijke links. De sjabloon beschrijft het zoek-en-vervangprincipe, maar geen specifiek doorgeefformaat.
Hoe archiveer ik de verzending ook als formulierinvoer?
Stel bij BlueSMTPMail() de waarde in op $FormEntry = "JA";. Volgens de sjabloon wordt er dan ook een invoer opgeslagen in 00_form.
Waar kan ik de verzendstatus controleren?
De sjabloon beschrijft hiervoor de tabel 00_MailCache. De daar aangemaakte verzendinvoeren worden een week opgeslagen. Een verwerkingsinvoer alleen is geen aanvullend bewijs voor de levering aan de ontvanger.
Wanneer gebruik ik BlueFormSend()?
BlueFormSend() is bedoeld voor het verzenden van e-mails met CMS-formulieren. Tot de parameters behoren onder andere verzendcontrole, onderwerp, klantenkopie, formulierarchief en formulier-ID.