📜  Zend框架-电子邮件管理

📅  最后修改于: 2020-10-16 07:47:02             🧑  作者: Mango


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主机的名称。

  • 主机-远程主机名或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' => '', 'password' => '', 
      'ssl' => 'ssl'], 
]); 
$transport->setOptions($options); 
  • 使用send方法发送电子邮件。

$transport->send($message);

完整列表Mail.php如下-

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' => '', 'password' => '', 
      'ssl' => 'ssl'], 
]); 
$transport->setOptions($options); 
$transport->send($message);

现在,在命令提示符下运行应用程序php Mail.php 。这将按照应用程序中的配置发送邮件。