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邮件提供了许多传输层和每个可能需要许多额外的参数,如用户名,密码等
电子邮件管理方法
一些著名的电子邮件管理方法如下-
- 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的邮件提供的选项通过发送使用SMTP服务器的电子邮件的Zend \邮件\传输\ Smtpclass。就像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主机的名称。
- 主机-远程主机名或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。这将按照应用程序中的配置发送邮件。
作者:terry,如若转载,请注明出处:https://www.web176.com/zendframework/263.html
支付宝
微信