gulltour/phpmailer

Yii框架的Phpmailer扩展

1.0.2 2017-11-13 02:01 UTC

This package is not auto-updated.

Last update: 2024-09-29 02:49:46 UTC


README

Yii框架的Phpmailer扩展 yii2-phpmailer

Yii 2框架的PHPMailer集成

警告!!!

Yii2框架引入了破坏向后兼容性的更改(请参阅 yiisoft/yii2#4071)。

如果您是在2014年6月26日之后更新的,应该修复您的应用程序配置和调用邮件函数(将 mail 替换为 mailer)。

在配置文件中,您应该将

	'components' => [
        'mail' => [
        ...

替换为

	'components' => [
        'mailer' => [
        ...

在您的代码中替换

Yii::$app->mail->...Yii::$app->mailer->...

(或者分别将 Yii::$app->getMail()... 替换为 Yii::$app->getMailer()...)。

===

此扩展将流行的 PHPMailer 库集成到 Yii 2框架 中,这是一个 "功能齐全的PHP电子邮件创建和传输类"

虽然扩展类实现了 yii\mail\MailerInterfaceyii\mail\MessageInterface,但一些 Yii 2 BaseMailerBaseMessage 的方法被覆盖 - 主要是因为PHPMailer特定的原因。

尽管如此 - 扩展的行为应该保持预期和可预测,并符合上述接口(我相信是这样的)。如果不是 - 欢迎您报告 问题

要求

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

安装

通过Composer安装

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

在扩展安装过程中,也会安装 PHPMailer 库。

这里有两种选择 - 安装最新 稳定版PHPMailer(目前是 5.2.8 - 此版本解决了许多重大问题并进行了改进)或安装最新开发版本的 dev-master

因此,您可以运行以下命令之一:

  • 对于PHPMailer稳定版
php composer.phar require --prefer-dist gulltour/phpmailer "~1.0.0"
  • 对于开发版
php composer.phar require --prefer-dist gulltour/phpmailer "~1.0.0"

或者在您的 composer.json 的 require 部分中添加相应的依赖项:

"gulltour/phpmailer": "~1.0.0"

"gulltour/phpmailer": "~1.0.0"

注意:这可能会受到项目根目录中 composer.json 文件中 'minimum-stability' 设置的影响。如果您在尝试安装PHPMailer的 'dev-master' 分支时遇到错误,您应该明确指向它,在项目根目录的 composer.json 的 require 部分中添加:

"phpmailer/phpmailer": "*"

从存档文件安装

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

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

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

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

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

加载库的首选方式 - 只需 require '/path/to/PHPMailerAutoload.php';,一切应该都会正常工作

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

配置

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

return [
//....
	'components' => [
        'mailer' => [
            'class'            => 'gulltour\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',
            ],
        ],
	],
];

这是通过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 文章。