前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel 发送邮件

Laravel 发送邮件

作者头像
崔哥
发布2023-03-24 15:13:58
2K0
发布2023-03-24 15:13:58
举报
文章被收录于专栏:崔哥的专栏崔哥的专栏

简单使用

配置

以阿里企业邮为例,修改.env文件

代码语言:javascript
复制
MAIL_MAILER=smtp
MAIL_HOST=smtp.mxhichina.com
MAIL_PORT=25
MAIL_USERNAME=notifications-noreply@a.com
MAIL_PASSWORD=123
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=notifications-noreply@a.com
MAIL_FROM_NAME=notifications-noreply

关于MAIL_ENCRYPTION参数,我查看了源码,它的值只有tls和其他,tls即ssl加密,源码如下:

代码语言:javascript
复制
    public function setEncryption($encryption)
    {
        $encryption = strtolower($encryption ?? '');
        if ('tls' == $encryption) {
            $this->params['protocol'] = 'tcp';
            $this->params['tls'] = true;
        } else {
            $this->params['protocol'] = $encryption;
            $this->params['tls'] = false;
        }

        return $this;
    }

发送邮件

发送文本邮件

代码语言:javascript
复制
        Mail::raw('邮件内容。。', function (\Illuminate\Mail\Message $message){
//            $message->to('1@qq.com');//无主题
            $message->subject('测试一下。。')->to('1@qq.com');
        });

发送富文本邮件

代码语言:javascript
复制
        Mail::send('emails.test',['name'=>'张三'],function (\Illuminate\Mail\Message $message){
            $message->subject('测试一下。。')->to('1@qq.com');
        })

视图文件 resources/views/emails/test.blade.php

生成Mailables

Laravel 更推荐使用mailable类来发送邮件

创建RegisterSuccess

代码语言:javascript
复制
root@php-fpm:/var/www/laravel-demo# php artisan make:mail RegisterSuccess

如上,生成了一个mailable 类app/Mail/RegisterSuccess.php,请注意所有可邮寄类的配置都是在 build 方法中完成的。

配置视图

代码语言:javascript
复制
    public function build()
    {
        return $this->view('emails.register_success');
    }

视图文件resources/views/emails/register_success.blade.php

纯文本邮件

你可以使用 text 方法来定义一个纯文本格式的邮件。和 view 方法一样, 该 text 方法接受一个模板名,模板名指定了在渲染邮件内容时你想使用的模板。你既可以定义纯文本格式亦可定义 HTML 格式:

代码语言:javascript
复制
/**
 * 构建消息.
 *
 * @return $this
 */
public function build()
{
    return $this->view('emails.register_success')
                ->text('emails.register_success_plain');
}

视图数据

有两种方法传递数据到视图中。

第一种,通过 Public 属性

你在 mailable 类中定义的所有 public 的属性都将自动传递到视图中。

代码语言:javascript
复制
    public User $user;
    public function __construct(User $user)
    {
        //
        $this->user=$user;
    }
    public function build()
    {
        return $this->view('emails.register_success')->with(['name' => 'abc']);
    }

//视图文件
<body>
test2..<?=$name?>
--
<?=$user->name?>

</body>
</html>

第二种,通过 with 方法

代码语言:javascript
复制
    public function build()
    {
        return $this->view('emails.register_success')->with(['name' => 'abc']);
    }

Markdown 格式邮件

Markdown 格式邮件允许你可以使用 mailable 中的预构建模板和 邮件通知 组件。由于消息是用 Markdown 编写,Laravel 能够渲染出美观的、响应式的 HTML 模板消息,同时还能自动生成纯文本副本。

生成 Markdown 邮件

代码语言:javascript
复制
root@php-fpm:/var/www/laravel-demo# php artisan make:mail RegisterSuccess2 --markdown=emails.register_success2

//

    public function build()
    {
        return $this->markdown('mail.register-success2', [
                    'url' => $this->orderUrl,
                ]);
    }

Markdown mailable 类整合了 Markdown 语法和 Blade 组件,让你能够非常方便的使用 Laravel 预置的 UI 组件来构建邮件消息

常用组件:按钮组件,面板组件,表格组件,当然你也可以自定义组件

可以将所有 Markdown 邮件组件导出到自己的应用,用作自定义组件的模板。若要导出组件,使用 laravel-mail 资产标签的 vendor:publish Artisan 命令:

代码语言:javascript
复制
php artisan vendor:publish --tag=laravel-mail

发送邮件

若要发送邮件,使用 Mail 门面 的方法。该 to 方法接受 邮件地址、用户实例或用户集合。如果传递一个对象或者对象集合,mailer 在设置收件人时将自动使用它们的 email 和 name 属性,因此请确保对象的这些属性可用。一旦指定了收件人,就可以将 mailable 类实例传递给 send 方法:

代码语言:javascript
复制
$user=User::query()->first();
//Mail::to('1@qq.com')->send(new RegisterSuccess($user));
Mail::to($user)->send(new RegisterSuccess($user));

渲染邮件

有时您可能希望捕获邮件的 HTML 内容而不发送它。为此,可以调用邮件类的 render 方法。此方法将以字符串形式返回邮件类的渲染内容:

代码语言:javascript
复制
use App\Mail\InvoicePaid;
use App\Models\Invoice;

$invoice = Invoice::find(1);

return (new InvoicePaid($invoice))->render();

在浏览器中预览邮件

代码语言:javascript
复制
Route::get('/mailable', function () {
    $invoice = App\Models\Invoice::find(1);

    return new App\Mail\InvoicePaid($invoice);
});
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单使用
    • 配置
      • 发送邮件
      • 生成Mailables
        • 配置视图
          • 视图数据
          • Markdown 格式邮件
          • 发送邮件
          • 渲染邮件
          相关产品与服务
          图数据库 KonisGraph
          图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档