zyx/zyx-phpmailer

Yii 2 框架的 PHPMailer 集成

安装次数: 54,485

依赖关系: 4

建议者: 0

安全性: 0

星标: 2

关注者: 3

分支: 5

开放问题: 5

类型:yii2-extension

0.9.4 2017-11-03 10:04 UTC

This package is not auto-updated.

Last update: 2024-09-24 00:37:08 UTC


README

Yii 2 框架的 PHPMailer 集成

Latest Stable Version Latest Unstable Version Total Downloads License Code Climate Scrutinizer Code Quality

===

警告!!!

PHPMailer 6 已经发布,包含一些破坏向后兼容性的更改,并且最低要求为 php 5.5。

本包目前尚不支持 PHPMailer 6(正在开发支持,但目前没有截止日期)。

此扩展将流行的 PHPMailer 库(一个 "适用于 PHP 的功能齐全的电子邮件创建和传输类")集成到 Yii 2 框架 中。

虽然扩展类实现了 yii\mail\MailerInterfaceyii\mail\MessageInterface,但已覆盖了 Yii 2 BaseMailerBaseMessage 的某些方法——主要是由于 PHPMailer 特定的原因。

尽管如此——扩展的行为应该符合预期和可预测,并遵守上述接口(我相信是这样的)。如果不这样,请随时报告 问题

要求

通常应遵循 Yii 2 要求。最低要求是您的 Web 服务器支持 PHP 5.4.0。

安装

通过 Composer 安装

如果您没有 Composer,您可以按照 getcomposer.org 上的说明进行安装。

在扩展安装过程中,如果您的项目中尚未包含 PHPMailer 库,它也将被安装。

因此,您可以选择以下任一操作:

php composer.phar require --prefer-dist zyx/zyx-phpmailer "^0.9.4"

或分别添加到 composer.json 的 require 部分:

"zyx/zyx-phpmailer": "^0.9.4"

注意:这可能受项目根目录 composer.json 文件中 'minimum-stability' 设置的影响。如果您想安装除项目 'minimum-stability' 以外的版本,您应明确在项目根目录 composer.json 的 require 部分中指出。

从存档文件安装

您也可以手动安装扩展。为此,您需要下载存档文件并将其提取到项目的 vendor/zyx 目录。

您还需要下载 PHPMailer 库并将其提取到项目的 vendor/phpmailer 目录。

注意:由于命名约定,第三方扩展和库保存在 vendor 目录下。

通过 Composer 安装的优点之一是自动设置自动加载。如果您从存档文件安装扩展和 PHPMailer 库,您将需要手动设置自动加载路径。

注意:目前 PHPMailer 不支持命名空间(因为其最低要求为 php 5.0),但它提供了一个与 SPL 兼容的自动加载器,并且...

加载库的首选方式是 require '/path/to/PHPMailerAutoload.php';,然后一切应该正常工作

有关更多信息,请参阅 PHPMailer 文档。

配置

要使用此扩展,您应在应用程序配置文件中添加一些设置。它可能如下所示

return [
//....
	'components' => [
        'mailer' => [
            'class'            => 'zyx\phpmailer\Mailer',
            'viewPath'         => '@common/mail',
            'useFileTransport' => false,
            'config'           => [
                'mailer'     => 'smtp',
                'host'       => 'smtp.yandex.ru',
                'port'       => '465',
                'smtpsecure' => 'ssl',
                'smtpauth'   => true,
                'username'   => 'mysmtplogin@example.ru',
                'password'   => 'mYsmTpPassword',
            ],
        ],
	],
];

这是通过 yandex smtp 发送电子邮件的典型配置。

如果您熟悉 PHPMailer,您会看到 'config' 数组包含设置,类似于相应的 PHPMailer 属性。当 Mailer 初始化时,它们将被填充。

例如,您可以定义

'mailer' => 'mail'

'mailer' => 'sendmail', 'sendmail' => '/path/to/sendmail' - 和 PHPMailer 中的用法一样。

您也可以在 'messageConfig' 数组中配置一些应用程序的默认消息设置。它们将在创建消息时填充。

例如,您可以预先定义 'From' 电子邮件字段的默认内容,这样您就不必每次在撰写消息时都设置 'From'。

    ...
    'mailer' => [
        ...
        'messageConfig'    => [
         'from' => ['noreply@example.com' => 'My Example Site']
        ],
        ...
    ],
    ...

用法

简单用法示例

Yii::$app->mailer->compose()
     ->setFrom(['noreply@example.com' => 'My Example Site'])
     ->setTo([$form->email => $form->name])
     ->setSubject($form->subject)
     ->setTextBody($form->text)
     ->send();

发送带视图和布局的 HTML 电子邮件的示例(假设默认 'From' 已在应用程序配置文件中设置)

Yii::$app->mailer->compose('passwordResetToken', ['user'       => $user,
                                                'title'      => Yii::t('app', 'Password reset'),
                                                'htmlLayout' => 'layouts/html-reset'])
                ->setTo($this->email)
                ->setSubject(Yii::t('app', 'Password reset for ') . Yii::$app->params['siteName'])
                ->send();

注意:在撰写消息时动态设置 'htmlLayout' 不是 BaseMailer 的原生行为。此功能是在此特定扩展中引入的,并处于实验阶段。

有关更多用法示例,请参阅 Yii 2 BaseMailerBaseMessage 的文档以及扩展文件中的 PHPDoc 块。

此外,还有一些 Wiki 文章可供参考。