- Zend 框架教程
- Zend 框架 - 主页
- Zend 框架 - 简介
- Zend 框架 - 安装
- 骨架应用
- Zend 框架 - MVC 架构
- Zend 框架 - 概念
- Zend 框架 - 服务管理器
- Zend 框架 - 事件管理器
- Zend 框架 - 模块系统
- 应用结构
- Zend 框架 - 创建模块
- Zend 框架 - 控制器
- Zend 框架 - 路由
- Zend 框架 - 视图层
- Zend 框架 - 布局
- 模型和数据库
- 不同的数据库
- 表格和验证
- Zend 框架 - 文件上传
- Zend 框架 - Ajax
- Cookie 管理
- 会话管理
- Zend 框架 - 身份验证
- 电子邮件管理
- Zend 框架 - 单元测试
- Zend 框架 - 错误处理
- Zend 框架 - 工作示例
- Zend 框架有用的资源
- Zend 框架 - 快速指南
- Zend 框架 - 有用的资源
- Zend 框架 - 讨论
Zend 框架 - 电子邮件管理
Zend 框架提供了一个名为zend-mail 的单独组件来发送电子邮件。zend-mail 组件还提供了一个选项来读取和写入带有文本和 html 格式附件的电子邮件。在 Zend 中发送电子邮件配置起来更加容易和简单。
让我们在本章中了解电子邮件概念、基本设置、高级设置(例如 SMTP 传输等)。
安装邮件组件
可以使用以下 Composer 命令安装邮件组件。
composer require zendframework/zend-mail
基本电子邮件配置
一封基本电子邮件由一个或多个收件人、主题、正文和发件人组成。Zend 提供Zend\Mail\Message类来创建新电子邮件。要使用zend-mail发送电子邮件,您必须指定至少一个收件人以及消息正文。
创建新邮件消息的部分代码如下 -
use Zend\Mail; $mail = new Mail\Message(); $mail->setSubject('Zend email sample'); $mail->setBody('This is content of the mail message'); $mail->setFrom('sender@example.com', "sender-name"); $mail->addTo('recipient@test.com', "recipient-name");
Zend 提供了 Zend\Mail\Sendmail 类来发送邮件消息。Sendmail使用了php原生的邮件功能,mail来发送邮件消息,我们可以使用php配置文件来配置传输层。
使用 Sendmail 的部分编码如下 -
$transport = new Mail\Transport\Sendmail(); $transport->send($mail);
zend -mail提供了许多传输层,每个传输层可能需要许多附加参数,例如用户名、密码等
电子邮件管理方法
一些值得注意的电子邮件管理方法如下 -
isValid - 没有“发件人”地址的消息无效。
isValid() : bool
setEncoding - 设置消息编码。
setEncoding(string $encoding) : void
getEncoding - 获取消息编码。
getEncoding() : string
setHeaders - 撰写标题。
setHeaders(Zend\Mail\Headers $headers) : void
getHeaders - 访问标头集合。
getHeaders() : Zend\Mail\Headers
setFrom - 设置(覆盖)发件人地址。它包含一个键/值对,其中键是人类可读的名称,值是电子邮件地址。
setFrom( string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, string|null $name ) : void
addFrom - 添加“发件人”地址。
addFrom( string|AddressInterface|array|AddressList|Traversable $emailOrAddressOrList, string|null $name ) : void
getFrom - 检索“发件人”发件人列表。
getFrom() : AddressList setTo - Overwrite the address list in the To recipients. setTo( string|AddressInterface|array|AddressList|Traversable $emailOrAddressList, null|string $name ) : void
setSubject - 设置消息主题标头值。
setSubject(string $subject) :void
setBody - 设置消息正文。
setBody(null|string|Zend\Mime\Message|object $body) : void
SMTP传输层
zend -mail提供了通过Zend\Mail\Transport\Smtpclass使用 SMTP 服务器发送电子邮件的选项。它与Sendmail类似,只是它有一些附加选项来配置 SMTP 主机、端口、用户名、密码等。
部分代码如下 -
use Zend\Mail\Transport\Smtp as SmtpTransport; use Zend\Mail\Transport\SmtpOptions; $transport = new SmtpTransport(); $options = new SmtpOptions([ 'name' => 'localhost', 'host' =>'smtp.gmail.com', 'port' => 465, ]); $transport->setOptions($options);
这里,
name - SMTP 主机的名称。
host - 远程主机名或 IP 地址。
port - 远程主机正在侦听的端口。
邮件概念 – 示例
让我们按照以下几点编写一个简单的 php 控制台应用程序来了解邮件概念。
创建一个文件夹“mailapp”。
使用 Composer 工具安装zend-mail 。
在“mailapp”文件夹中创建一个 php 文件Mail.php 。
使用Zend\Mail\Message创建消息。
$message = new Message(); $message->addTo('user1@gmail.com'); $message->addFrom('user2@gmail.com'); $message->setSubject('Hello!'); $message->setBody("My first Zend-mail application!");
创建 SMTP 传输层并添加必要的配置。
// Setup SMTP transport using LOGIN authentication $transport = new SmtpTransport(); $options = new SmtpOptions([ 'name' => 'localhost', 'host' => 'smtp.gmail.com', // or any SMTP server 'port' => 465, // port on which the SMTP server is listening 'connection_class' => 'login', 'connection_config' => [ username' => '<your username>', 'password' => '<your password>', 'ssl' => 'ssl'], ]); $transport->setOptions($options);
使用send方法发送电子邮件。
$transport->send($message);
完整的清单Mail.php如下 -
<?php require __DIR__ . '/vendor/autoload.php'; use Zend\Mail\Message; use Zend\Mail\Transport\Smtp as SmtpTransport; use Zend\Mail\Transport\SmtpOptions; $message = new Message(); $message->addTo('user1@gmail.com'); $message->addFrom('user2@gmail.com'); $message->setSubject('Hello!'); $message->setBody("My first Zend-mail application!"); // Setup SMTP transport using LOGIN authentication $transport = new SmtpTransport(); $options = new SmtpOptions([ 'name' => 'localhost', 'host' => 'smtp.gmail.com', // or any SMTP server 'port' => 465, // port on which the SMTP server is listening 'connection_class' => 'login', 'connection_config' => [ 'username' => '<your username>', 'password' => '<your password>', 'ssl' => 'ssl'], ]); $transport->setOptions($options); $transport->send($message);
现在,在命令提示符php Mail.php中运行应用程序。这将按照应用程序中的配置发送邮件。