Chamar sistema de email via PHP
Neste tutorial, você conhecerá os parâmetros de BlueSMTPMail() e BlueFormSend(), configurará o envio interno ou externo e entenderá como anexos, conteúdos HTML e logs de envio são tratados.
Objetivo do tutorial
Nota: Este tutorial é direcionado a desenvolvedores e mostra como o sistema de e-mail integrado do bluetronix CMS pode ser acessado diretamente através do PHP.
O bluetronix CMS oferece funções PHP centrais para o envio de e-mails.
Assim, conexões SMTP, contas de e-mail e funções básicas de envio não precisam ser programadas novamente para cada script PHP individual.
A seguinte função está disponível para o envio direto de e-mails e newsletters:
BlueSMTPMail($MailType,$MailAccount,$SMTPType,$From,$To,$NewsletterTo,$Subject,$TextContent,$HTMLContent,$Attachments,$EmbedImages,$MailPlaceholderReplacement,$FormEntry);
Para o envio de e-mails de formulário, a seguinte função adicional está disponível:
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
BlueSMTPMail()
Com BlueSMTPMail(), e-mails normais e newsletters podem ser enviados através do sistema de e-mail central do bluetronix CMS.
A chamada da função é:
BlueSMTPMail(
$MailType,
$MailAccount,
$SMTPType,
$From,
$To,
$NewsletterTo,
$Subject,
$TextContent,
$HTMLContent,
$Attachments,
$EmbedImages,
$MailPlaceholderReplacement,
$FormEntry
);
$MailType
Determina que tipo de e-mail deve ser enviado.
Valores possíveis:
Mail
Newsletter
Exemplo:
$MailType = "Mail";
ou:
$MailType = "Newsletter";
$MailAccount
$MailAccount determina a conta de e-mail cujas configurações SMTP devem ser usadas.
Esse valor carrega os dados de configuração SMTP correspondentes das tabelas do banco de dados do CMS.
Qual configuração é utilizada depende também de $SMTPType.
$SMTPType
Determina se uma conta de e-mail interna ou externa será utilizada.
Valores possíveis:
Intern
Extern
Interna
Em:
$SMTPType = "Intern";
uma conta de e-mail que foi configurada diretamente no bluetronix CMS será utilizada.
As contas podem ser encontradas em:
Email → Accounts
O endereço de e-mail do remetente utilizado em $From deve estar presente lá como uma conta.
Externa
Em:
$SMTPType = "Extern";
serão utilizados dados de acesso SMTP externos.
Esses dados são gerenciados no CMS em:
Email → Server - Extern
.
O endereço de e-mail do remetente utilizado em $From deve estar configurado adequadamente lá.
$From
Contém o endereço de e-mail do remetente.
Exemplo:
$From = "info@example.com";
O endereço de e-mail deve corresponder à configuração SMTP escolhida.
$To
Contém o endereço de e-mail do destinatário de um e-mail normal.
Exemplo:
$To = "customer@example.com";
Em um envio de e-mail normal, esta variável é usada como destinatário.
$NewsletterTo
$NewsletterTo é usado no envio de newsletters.
A variável contém vários endereços de e-mail como texto. Cada endereço de e-mail é separado por uma quebra de linha.
Exemplo:
$NewsletterTo = "customer1@example.com\ncustomer2@example.com\ncustomer3@example.com";
$Subject
Contém o assunto do e-mail.
Exemplo:
$Subject = "Welcome to our website";
$TextContent
Contém a parte de texto puro do e-mail.
Esta parte pode ser utilizada, por exemplo, por programas de e-mail que não exibem e-mails em HTML.
Exemplo:
$TextContent = "Thank you for your request.";
$HTMLContent
Contém a parte HTML do e-mail.
Exemplo:
$HTMLContent = "<h1>Thank you</h1><p>Thank you for your request.</p>";
Com isso, e-mails formatados com cabeçalhos, textos, links, imagens e outros elementos HTML podem ser enviados.
$Attachments
Com $Attachments, é possível anexar arquivos ao e-mail.
Os arquivos são especificados pelo seu caminho dentro do site.
Exemplo:
$Attachments = "/bx_doc/Intro.pdf";
Em caso de múltiplos anexos, os caminhos individuais dos arquivos são separados por uma quebra de linha.
Exemplo:
$Attachments = "/bx_doc/Intro.pdf\n/bx_doc/PriceList.pdf";
$EmbedImages
Com $EmbedImages, pode-se definir se as imagens devem ser incorporadas diretamente no e-mail.
Exemplo:
$EmbedImages = "ja";
Com a opção ativada, as imagens utilizadas dentro do e-mail HTML são integradas diretamente no e-mail e não apenas carregadas por meio de URLs externas.
Dessa forma, as imagens podem estar disponíveis diretamente no e-mail para o destinatário, sem necessidade de serem carregadas separadamente do servidor web.
$MailPlaceholderReplacement
Com $MailPlaceholderReplacement, podem-se substituir marcadores dentro de:
$TextContent
$HTMLContent
por valores individuais.
O princípio é:
Search
↓
Replace
Dessa forma, por exemplo, conteúdos personalizados podem ser gerados dentro de um e-mail.
As aplicações típicas são:
- Name des Empfängers
- Kundennummer
- Bestellnummer
- individuelle Links
- weitere dynamische Inhalte
$FormEntry
Com $FormEntry, pode-se definir se o envio deve ser salvo adicionalmente no arquivo de formulários.
Em:
$FormEntry = "JA";
é adicionado um registro na tabela do banco de dados:
00_form
salvo.
Assim, o envio pode ser documentado simultaneamente como uma entrada de formulário ou arquivo.
Exemplo: Enviar e-mail normal
O seguinte exemplo envia um e-mail normal em HTML e texto através de uma conta 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);
O processo é simplificado da seguinte forma:
PHP
↓
BlueSMTPMail()
↓
internen Mail-Account laden
↓
SMTP-Verbindung verwenden
↓
E-Mail erzeugen
↓
E-Mail versenden
↓
MailCache-Eintrag erzeugen
Exemplo: Enviar newsletter
Para um boletim informativo, $MailType é definido como:
Newsletter
definido.
Os destinatários são então passados por $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);
Os destinatários individuais do boletim informativo são separados por quebras de linha dentro de $NewsletterTo.
Usar conexão SMTP externa
Se um servidor de email externo deve ser usado, é necessário:
$SMTPType = "Extern";
definido.
Os dados de acesso SMTP devem ser configurados previamente em:
Email → Server - Extern
devem ter sido configurados.
Exemplo:
$SMTPType = "Extern";
$From = "mail@external-domain.com";
$MailAccount = "mail@external-domain.com";
BlueFormSend()
Além do envio direto de e-mails, a função:
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
está disponível.
Esta função é especificamente destinada ao envio de e-mails em conjunto com formulários CMS.
As variáveis já estão completamente em inglês.
Parâmetros de BlueFormSend()
| Variável | Uso |
|---|---|
$SMTPType |
Selecionar envio SMTP interno ou externo |
$SendMail |
Controla o envio de e-mail do formulário |
$SendSubject |
Assunto do e-mail do formulário |
$CopyToCustomer |
Controla se o cliente recebe uma cópia |
$TextToCustomer |
Texto para a mensagem ao cliente |
$FormArchive |
Controla o arquivamento do formulário |
$FormID |
ID do formulário em questão |
$SendTo |
Destinatário do e-mail do formulário |
MailCache
Cada chamada de BlueSMTPMail() gera também uma entrada na tabela do banco de dados:
00_MailCache
Através dessa tabela, pode-se controlar o status do envio do e-mail.
Lá, por exemplo, pode-se verificar se um e-mail foi processado ou enviado com sucesso.
As entradas do MailCache são para:
1 Woche
salvo.
Fluxo típico de um envio de e-mail
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
Visão geral dos parâmetros de BlueSMTPMail
| Variável | Significado |
|---|---|
$MailType |
E-mail ou newsletter |
$MailAccount |
Conta de e-mail a ser utilizada |
$SMTPType |
Interno ou externo |
$From |
Endereço do remetente |
$To |
Destinatário de um e-mail normal |
$NewsletterTo |
Destinatários da newsletter, separados por quebras de linha |
$Subject |
Assunto do e-mail |
$TextContent |
Parte do texto do e-mail |
$HTMLContent |
Parte HTML do e-mail |
$Attachments |
Caminhos dos anexos |
$EmbedImages |
Integrar imagens diretamente no e-mail |
$MailPlaceholderReplacement |
Substituir placeholders dentro do conteúdo do e-mail |
$FormEntry |
Gerar entrada opcional no 00_form |
Zusammenfassung
O sistema de e-mail central do CMS bluetronix pode ser chamado diretamente a partir do próprio código PHP.
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 formulários do CMS, está disponível adicionalmente:
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
Die SMTP-Konfiguration kann entweder über:
Interno
→ Email → Contas
ou:
Extern
→ Email → Server - Extern
erfolgen.
Cada envio de e-mail é também registrado em:
00_MailCache
protokolliert. Die entsprechenden Cache-Einträge bleiben eine Woche erhalten.
Assim, os desenvolvedores podem usar o sistema de e-mail já existente do CMS bluetronix diretamente de seus próprios scripts PHP, sem precisar implementar toda a lógica SMTP.
FAQ
o que os clientes nos perguntam frequentemente
Quais funções o sistema de e-mail central fornece para PHP?
Para e-mails normais e newsletters, você usa BlueSMTPMail(). Para envios em conjunto com formulários do CMS, BlueFormSend() está disponível.
Onde encontro as contas de e-mail internas?
As contas de e-mail internas são configuradas em Email → Contas. Para seu envio, configure $SMTPType para Interno. O endereço do remetente deve pertencer a uma conta configurada.
Como uso um servidor SMTP externo?
Configure os dados de acesso em Email → Servidor - Externo e use $SMTPType = "Externo";. O endereço do remetente deve corresponder à configuração escolhida.
Qual é a diferença entre e-mail e newsletter?
Com $MailType = "Mail"; um e-mail normal é enviado, cujo destinatário está em $To. Para uma newsletter, você define $MailType = "Newsletter"; e passa os destinatários por $NewsletterTo.
Como passo vários destinatários de newsletter?
Insira os endereços em $NewsletterTo e separa cada e-mail por uma quebra de linha.
Posso enviar texto e HTML no mesmo e-mail?
Sim. O texto puro vai em $TextContent, enquanto a mensagem HTML formatada deve ser passada pelo $HTMLContent.
Como adiciono anexos a um e-mail?
Por meio de $Attachments, você passa caminhos de arquivo dentro do site. Para vários anexos, os caminhos devem ser separados por quebras de linha.
Como posso incorporar imagens diretamente em um e-mail?
O template usa $EmbedImages = "sim";. Isso fará com que as imagens usadas na mensagem HTML sejam incorporadas diretamente pela função mencionada do CMS.
Para que serve o MailPlaceholderReplacement?
Com isso, você pode substituir marcadores no conteúdo de texto e HTML por valores individuais, como nomes, números de pedido ou links pessoais. O template descreve o princípio de busca e substituição, mas não um formato de transmissão específico.
Como arquivo o envio também como entrada de formulário?
Defina em BlueSMTPMail() o valor $FormEntry = "SIM";. De acordo com o template, um registro será salvo na 00_form.
Onde posso verificar o status de envio?
O template descreve a tabela 00_MailCache. Os registros de envio feitos ali são armazenados por uma semana. Um registro de processamento por si só não é uma prova adicional de entrega ao destinatário.
Quando uso o BlueFormSend()?
BlueFormSend() é projetado para envio de e-mails com formulários CMS. Os parâmetros incluem controle de envio, assunto, cópia ao cliente, arquivo de formulário e ID do formulário.