教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 Laravel 中利用MailThief实现邮件发送例子

Laravel 中利用MailThief实现邮件发送例子

发布时间:2017-12-10   编辑:jiaochengji.com
教程集为您提供Laravel 中利用MailThief实现邮件发送例子等资源,欢迎您收藏本站,我们将为您提供最新的Laravel 中利用MailThief实现邮件发送例子资源
MailThief ?? 让 Laravel 应用中测试邮件发送变得简单,MailThief是TightenCo编写的一个新扩展包,用于在Laravel应用中模拟邮件发送,下面来看一篇Laravel 中利用MailThief实现邮件发送例子吧。


MailThief 是 Tighten Co 编写的一个新扩展包,用于在 Laravel 应用中模拟邮件发送,通过该扩展包我们可以在不发送邮件的情况下实现邮件发送测试,这么说可能还是有点绕,下面我们通过一个具体的实例来说明。

假设我们之前为新用户注册成功发送欢迎邮件注册过一个这样的路由:

Route::post('register', function () {
    // <snip> 这里是注册实现逻辑 </snip>

    Mail::send('emails.welcome', [], function ($m) {
        $email = request('email');
        $m->to($email),
        $m->subject('Welcome to my app!');
        $m->from('noreply@example.com');
        $m->bcc('notifications@example.com');
    });

    // <snip> 返回响应 </snip>
});
通常这个功能测试很麻烦,需要我们手动注册,如果发送失败又要重新走一遍注册流程,但有了MailThief,一切都将变得简单:

首先,我们需要通过Composer安装该扩展:

composer require tightenco/mailthief
接下来我们通过如下Artisan命令创建测试类:

php artisan make:test RegistrationTest
然后修改测试类方法如下:

use MailThief\Facades\MailThief;

class RegistrationTest extends TestCase{
    public function testNewUserRegistered()
    {
        // 阻止和拦截向外发送邮件, 这一步很重要!
        MailThief::hijack();

        $this->post('register', [
            'name' => 'John Doe',
            'email' => 'john@example.com',
            'password' => 'secret',
        ]);
        // 检查邮件是否已发送到指定邮箱
        $this->assertTrue(MailThief::hasMessageFor('john@example.com'));

        // 也可以包含抄送邮箱
        $this->assertTrue(MailThief::hasMessageFor('notifications@example.com'));

        // 确保邮件主题正确
        $this->assertEquals('欢迎注册Laravel学院!', MailThief::lastMessage()->subject);

        // 确保这封邮件来自正确的发送地址
        // (`from` 可以是个列表,所以我们以集合形式返回)
        $this->assertEquals('noreply@example.com', MailThief::lastMessage()->from->first());
    }

}
然后在命令行运行 phpunit 命令,即可测试用户注册发送邮件功能。

您可能感兴趣的文章:
Laravel 中利用MailThief实现邮件发送例子
Laravel 5.1用SMTP发送邮件(含附件和图片)例子
phpmailer发送yahoo邮件的例子
PHPmailer邮件群发的入门例子
phpmailer 类发送邮件乱码解决方法
如何提高E-mail收发的成功率
Laravel实现找回密码及密码重置的例子
phpmailer发送网易126邮箱的例子
PHPMailer发送邮件代码实例(ubuntu系统)
PHPMailer邮件标题中文乱码的解决方法

[关闭]
~ ~