yii2 邮件发送笔记

用什么学什么

这几天忙着收尾一个门户网站的外包,需要做一个点击即可发送邮件到指定邮箱的功能。琢磨了一下源代码,大致是这些步骤:

  • 在配置文件中设置好你用来发信的邮箱信息
  • 把邮件的发送和配置,写进Model类
  • 在Controller类的具体action方法中调用Model类
  • 在View文件中,使用 activeFormInstance>field( modelInstance,’attribute’); 来获取和 Model 相关的参数互动

改写配置文件

 YII2_ROOT/common/config/main-local.php中的 components/mailer/transport 配置块:

属性
host邮件服务商网址,比如 smtp.163.com
username发信人用户名,必须和真实的邮件用户一致
password发信邮箱密码
class邮件服务的 php 类,一般是 Swift_SmtpTransport
port邮件服务端口,比如 25

注意

配置文件中的components/mailer/transport配置块,和 components/mailer 中的 useFileTransport 属性不能相互包含,请设useFileTransport为false

示例

完整的配置文件代码:

return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection', 
            'dsn' => 'mysql:host=localhost;dbname=我的数据库名', // 需要和服务器的 MySQL 用户和库名字一致
            'username' => '我的数据库用户名',
            'password' => '我的数据库密码',
            'charset' => 'utf8',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@common/mail',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => false,
            'transport' => [ 
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.163.com', // 网易的 smtp 是能用的
                'username' => '发信邮箱的用户名',
                'password' => '发信邮箱的明文密码',
                'port' => '25' // 不需要设置 tls 选项
            ] 
        ],
    ],
];


使用邮件模板

假如你在 YII2_ROOT/backend/mail/layout里面放置了要调用的邮件模板demo.php ,那么位于 YII2_ROOT/backend/models 的 Model 类,需要使用\Yii::$app->mailer->compose('demo',['myParameter'=>'myValue']) ; 来确保使用使用了demo.php这个模板,第二个参数是配置给邮件模板(也是一种特殊的 View文件)的参数组成的一个数组。晚一点做好了项目,再更新这篇好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Yii2框架提供了对RabbitMQ的支持。你可以使用Yii2的消息队列组件来集成和管理RabbitMQ。 首先,确保已安装RabbitMQ并运行在你的环境中。然后,通过Composer安装yii2-rabbitmq扩展包: ``` composer require mikemadisonweb/yii2-rabbitmq ``` 安装完成后,在Yii2的配置文件中添加以下内容以启用RabbitMQ组件: ```php 'components' => [ 'rabbitmq' => [ 'class' => 'mikemadisonweb\rabbitmq\Configuration', 'connections' => [ 'default' => [ 'host' => 'localhost', 'port' => 5672, 'user' => 'guest', 'password' => 'guest', 'vhost' => '/', ], ], 'exchanges' => [ 'myExchange' => [ 'name' => 'exchange_name', 'type' => 'direct', ], ], 'queues' => [ 'myQueue' => [ 'name' => 'queue_name', 'exchangeName' => 'exchange_name', ], ], ], ], ``` 以上配置了默认的RabbitMQ连接、交换机和队列。你可以根据需要进行自定义配置。 使用RabbitMQ组件发送消息示例: ```php use yii\base\BaseObject; use mikemadisonweb\rabbitmq\components\Producer; class MyJob extends BaseObject implements \yii\queue\JobInterface { public function execute($queue) { $producer = new Producer(); $producer->publish('Hello, RabbitMQ!', 'myExchange'); } } ``` 上述代码定义了一个基于Yii2队列的作业类。在`execute`方法中,我们创建了一个生产者实例,并使用`publish`方法将消息发送到名为`myExchange`的交换机。 接下来,你可以使用Yii2队列组件将作业推送到RabbitMQ: ```php use yii\queue\Queue; /** @var Queue $queue */ $queue = Yii::$app->get('queue'); $queue->push(new MyJob()); ``` 以上代码创建了一个队列实例,并使用`push`方法将`MyJob`作业推送到队列中。 这只是一个简单的示例,你可以根据你的需求来扩展和定制。请参考yii2-rabbitmq扩展包的文档以获取更多详细信息和用法示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值