Zend Framework - Email 管理

  • 简述

    Zend 框架提供了一个名为zend-mail的单独组件来发送电子邮件。 组件还提供了一个选项,用于读取和写入带有文本和 html 格式附件的电子邮件。在Zend中发送电子邮件更容易配置,也更简单。
    在本章中,让我们介绍一下电子邮件概念,基本设置,高级设置(如SMTP传输等)。

    安装邮件组件

    可以使用以下 composer 命令安装邮件组件。
    
    composer require zendframework/zend-mail
    

    基本电子邮件配置

    基本电子邮件由一个或多个收件人、主题、正文和发件人组成。Zend zend-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该应用程序。这将按照应用程序中的配置发送邮件。