通过PHP调用邮件系统
在本教程中,你将学习BlueSMTPMail()和BlueFormSend()的参数,设置内部或外部发送,并了解如何处理附件、HTML内容和发送日志。
教程的目标
提示:本教程面向开发者,展示如何通过PHP直接调用bluetronix CMS内置的邮件系统。
bluetronix CMS提供了用于发送电子邮件的核心PHP函数。
因此,无需为每个自定义PHP脚本重复编写SMTP连接、邮件账户和基本发送功能。
以下功能可用于直接发送电子邮件和新闻通讯:
BlueSMTPMail($MailType,$MailAccount,$SMTPType,$From,$To,$NewsletterTo,$Subject,$TextContent,$HTMLContent,$Attachments,$EmbedImages,$MailPlaceholderReplacement,$FormEntry);
此外,表单电子邮件的发送还提供了以下功能:
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
BlueSMTPMail()
使用BlueSMTPMail()可以通过bluetronix CMS的中央邮件系统发送普通电子邮件和新闻通讯。
函数调用为:
BlueSMTPMail(
$MailType,
$MailAccount,
$SMTPType,
$From,
$To,
$NewsletterTo,
$Subject,
$TextContent,
$HTMLContent,
$Attachments,
$EmbedImages,
$MailPlaceholderReplacement,
$FormEntry
);
$MailType
确定要发送的电子邮件类型。
可用值:
Mail
Newsletter
示例:
$MailType = "Mail";
或:
$MailType = "Newsletter";
$MailAccount
$MailAccount指定使用哪个电子邮件账户的SMTP设置。
通过此值,从CMS数据库表中加载相应的SMTP配置数据.
使用哪个配置,还取决于$SMTPType.
$SMTPType
确定是使用内部还是外部电子邮件账户.
可用值:
Intern
Extern
内部
在:
$SMTPType = "Intern";
将使用直接在bluetronix CMS中设置的电子邮件账户.
账户位于:
Email → Accounts
在$From中使用的发件人地址必须作为账户存在于那里.
外部
在:
$SMTPType = "Extern";
将使用外部SMTP访问数据.
这些数据在CMS中管理,位于:
Email → Server - Extern
管理。
在$From中使用的发件人地址必须相应设置。
$From
包含发件人的电子邮件地址。
示例:
$From = "info@example.com";
电子邮件地址必须与所选的SMTP配置相匹配。
$To
包含普通电子邮件的接收者的电子邮件地址。
示例:
$To = "customer@example.com";
在普通邮件发送中,此变量用作接收者。
$NewsletterTo
在时事通讯发送中使用$NewsletterTo。
该变量包含多个电子邮件地址的文本。每个电子邮件地址通过换行符分隔。
示例:
$NewsletterTo = "customer1@example.com\ncustomer2@example.com\ncustomer3@example.com";
$Subject
包含电子邮件的主题。
示例:
$Subject = "Welcome to our website";
$TextContent
包含电子邮件的纯文本部分。
此部分可由不显示HTML电子邮件的电子邮件程序使用。
示例:
$TextContent = "Thank you for your request.";
$HTMLContent
包含电子邮件的HTML部分。
示例:
$HTMLContent = "<h1>Thank you</h1><p>Thank you for your request.</p>";
这使可以发送带有标题、文本、链接、图像和其他HTML元素的格式化电子邮件。
$Attachments
可以使用$Attachments将文件附加到电子邮件。
文件通过它们在网页中的路径指定。
示例:
$Attachments = "/bx_doc/Intro.pdf";
当有多个附件时,各个文件路径通过换行符分隔。
示例:
$Attachments = "/bx_doc/Intro.pdf\n/bx_doc/PriceList.pdf";
$EmbedImages
可以使用$EmbedImages来指定是否将图像直接嵌入电子邮件中。
示例:
$EmbedImages = "ja";
如果选项已启用,在HTML电子邮件中使用的图像将直接集成到电子邮件中,而不仅仅通过外部URL加载。
这样,接收者可以直接在电子邮件中查看图像,而无需单独从Web服务器加载。
$MailPlaceholderReplacement
可以使用$MailPlaceholderReplacement在以下内容中替换占位符:
$TextContent
$HTMLContent
通过个性化值进行替换。
原则是:
Search
↓
Replace
因此可以在电子邮件中生成个性化内容。
典型的使用场景包括:
- Name des Empfängers
- Kundennummer
- Bestellnummer
- individuelle Links
- weitere dynamische Inhalte
$FormEntry
可以使用$FormEntry来指定是否还要将发送内容保存在表单归档中。
在:
$FormEntry = "JA";
还将数据库表中添加一条记录:
00_form
已保存。
这样可以将发送同时记录为表单或档案条目。
示例:发送普通电子邮件
以下示例通过内部邮件账户发送普通的HTML和文本电子邮件。
$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);
简化后的流程如下:
PHP
↓
BlueSMTPMail()
↓
internen Mail-Account laden
↓
SMTP-Verbindung verwenden
↓
E-Mail erzeugen
↓
E-Mail versenden
↓
MailCache-Eintrag erzeugen
示例:发送通讯
对于新闻稿,$MailType 设置为:
Newsletter
。
然后通过$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);
单个新闻稿收件人在$NewsletterTo中通过换行符分隔。
使用外部SMTP连接
如果要使用外部邮件服务器,将会:
$SMTPType = "Extern";
。
SMTP访问数据必须事先在:
Email → Server - Extern
进行设置。
示例:
$SMTPType = "Extern";
$From = "mail@external-domain.com";
$MailAccount = "mail@external-domain.com";
BlueFormSend()
除了直接邮件发送,还有功能:
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
可用。
此功能专为与CMS表单一起使用的电子邮件发送设计。
变量已经完全采用英文书写。
BlueFormSend()的参数
| 变量 | 使用 |
|---|---|
$SMTPType |
选择内部或外部SMTP发送 |
$SendMail |
控制表单的邮件发送 |
$SendSubject |
表单电子邮件的主题 |
$CopyToCustomer |
控制客户是否收到副本 |
$TextToCustomer |
发送给客户的消息文本 |
$FormArchive |
控制表单的归档 |
$FormID |
相关表单的ID |
$SendTo |
表单邮件的收件人 |
MailCache
每次调用 BlueSMTPMail() 都会在数据库表中产生一条记录:
00_MailCache
可以通过该表检查邮件发送的状态。
可以检查邮件是否成功处理或发送。
MailCache 条目用于:
1 Woche
已保存。
邮件发送的典型流程
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
BlueSMTPMail参数概述
| 变量 | 含义 |
|---|---|
$MailType |
邮件或时事通讯 |
$MailAccount |
要使用的邮件帐户 |
$SMTPType |
内部或外部 |
$From |
发件人地址 |
$To |
普通邮件的收件人 |
$NewsletterTo |
时事通讯收件人,使用换行符分隔 |
$Subject |
电子邮件主题 |
$TextContent |
电子邮件的文本部分 |
$HTMLContent |
电子邮件的HTML部分 |
$Attachments |
附件的文件路径 |
$EmbedImages |
将图片直接嵌入电子邮件 |
$MailPlaceholderReplacement |
在邮件内容中替换占位符 |
$FormEntry |
在00_form中生成可选条目 |
Zusammenfassung
bluetronix CMS的中央邮件系统可以直接从自有的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);
对于CMS表单,还可以使用:
BlueFormSend($SMTPType,$SendMail,$SendSubject,$CopyToCustomer,$TextToCustomer,$FormArchive,$FormID,$SendTo);
Die SMTP-Konfiguration kann entweder über:
内部
→ 电子邮件 → 账户
或者:
Extern
→ Email → Server - Extern
erfolgen.
每次邮件发送还会通过:
00_MailCache
protokolliert. Die entsprechenden Cache-Einträge bleiben eine Woche erhalten.
这样,开发者可以直接从自己的PHP脚本中使用bluetronix CMS已存在的邮件系统,而无需自己实现完整的SMTP逻辑。
常见问题
客户常问我们的问题
中央邮件系统为PHP提供了哪些功能?
对于普通电子邮件和通讯,你可以使用BlueSMTPMail()。而对于与CMS表单一起发送的邮件,则提供BlueFormSend()。
我在哪里可以找到内部电子邮件账户?
内部邮件账户在电子邮件 → 账户下设置。对于发送,你需要将$SMTPType设置为内部。发件地址必须属于已设置的账户。
如何使用外部SMTP服务器?
在电子邮件 → 服务器 - 外部下设置凭据,使用$SMTPType = "外部";。发件地址必须与所选配置匹配。
邮件和新闻通讯之间有什么区别?
使用 $MailType = "Mail"; 发送普通电子邮件,收件人位于 $To 中。对于新闻通讯,你需要设置 $MailType = "Newsletter"; 并通过 $NewsletterTo 传递收件人。
如何传递多个新闻通讯收件人?
将地址填写在 $NewsletterTo 中,并通过换行符分隔每个电子邮件地址。
我可以在同一电子邮件中发送文本和HTML吗?
可以。纯文本在 $TextContent 中,而你通过 $HTMLContent 传递格式化的HTML消息。
如何给电子邮件添加附件?
通过 $Attachments 传递网页中的文件路径。多个附件通过换行符分隔路径。
我如何直接在电子邮件中嵌入图片?
模板使用 $EmbedImages = "ja";。这将根据描述的CMS功能直接嵌入HTML消息中使用的图片。
MailPlaceholderReplacement 用于什么?
它允许你在文本和HTML内容中用个性化的值替换占位符,例如姓名、订单号或个人链接。模板描述了搜索和替换原则,但没有具体的传递格式。
我如何将发送归档为表单条目?
在 BlueSMTPMail() 中设置 $FormEntry = "JA";。根据模板,将在 00_form 中额外保存一个条目。
我在哪里可以检查发送状态?
模板描述了 00_MailCache 表。那里创建的发送条目将保存一周。单独的处理条目不能作为交付给收件人的附加证明。
我什么时候使用 BlueFormSend()?
BlueFormSend() 被用于带有CMS表单的电子邮件发送。参数包括发送控制、主题、客户副本、表单归档和表单ID。