Zend Framework - Email 管理
-
简述
Zend 框架提供了一个名为zend-mail
的单独组件来发送电子邮件。 组件还提供了一个选项,用于读取和写入带有文本和 html 格式附件的电子邮件。在Zend中发送电子邮件更容易配置,也更简单。在本章中,让我们介绍一下电子邮件概念,基本设置,高级设置(如SMTP传输等)。安装邮件组件
可以使用以下 composer 命令安装邮件组件。composer require zendframework/zend-mail
基本电子邮件配置
基本电子邮件由一个或多个收件人、主题、正文和发件人组成。Zendzend-mail
提供了用于创建新电子邮件的类Zend\Mail\Message
。要使用Message
发送电子邮件,必须至少指定一个收件人以及邮件正文。创建新邮件的部分代码如下所示 −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”类来发送邮件。 使用php原生邮件功能,发送邮件消息,我们可以使用php配置文件配置传输层。使用发送邮件的部分编码如下 -$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
-
-
传输层
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
− 主机的名称。 -
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
该应用程序。这将按照应用程序中的配置发送邮件。 -