laravel学习笔记--邮件发送
邮件发送
Laravel 基于热门的 SwiftMailer 函数库提供了一套干净、简洁的 API ,可以为
SMTP、Mailgun、Postmark、Amazon SES 和 sendmail
提供驱动,让你可以快速从本地或云端服务自由地发送邮件。
配置文件
配置文件可以在.env文件中去修改
//使用方式
MAIL_MAILER=smtp
//服务器地址
MAIL_HOST=smtp.163.com
//发送端口
MAIL_PORT=465
//发送邮箱
MAIL_USERNAME=xiaoxindcw@163.com
//授权码
MAIL_PASSWORD=PTZULMGPZICUNQXO
//发送方式,这里使用ssl加密
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=xiaoxindcw@163.com
//发送头
MAIL_FROM_NAME="博客"
生成 Mailables(可邮寄类)
在 Laravel 中,应用发送的每种邮件都被表示为 mailable 类。这些类存储于 app/Mail
目录中。如果您的应用中没有该目录,别慌,当您使用 make:mail 命令生成您的首个 mailable 类时,应用将会自动创建它
首次生成Mail会自动在app目录中去生成一个新的Mail目录,该目录专门放与邮件有关的类
生成mailable 类命令
php artisan make:mail OrderShipped
其实,所有的 mailable 类的配置都在 build 方法中完成
配置发件人
使用 from 方法
有两种方法配置发件人
第一种,您可以在 mailable 类的 build 方法中使用 from 方法
return $this->from('example@example.com')
->view('emails.orders.shipped');
第二种,使用全局的 from 地址,它在.env配置文件中就已经配置好了
MAIL_FROM_ADDRESS=xiaoxindcw@163.com
配置邮件视图
可以在 mailable 类的 build 方法中使用 view 方法来指定在渲染邮件内容时要使用的模板
由于每封邮件通常使用 Blade 模板 来渲染其内容,因此您可以在构建您的邮件 HTML 内容时使用 Blade
模板引擎提供的所有功能及享受其带来的便利性
模板可以放在resources/views目录下,一般的做法就是在resources/views目录下再创建一个emails目录,也就是resources/views/emails这里面存放邮件视图
纯文本邮件
可以使用 text 方法来定义一个纯文本格式的邮件
和 view 方法一样,text 方法接受一个模板名,模板名指定了在渲染邮件内容时您想使用的模板。您既可以定义纯文本消息亦可定义 HTML
消息
/**
* 构建邮件消息。
*
* @return $this
*/
public function build()
{
return $this->view('emails.orders.shipped')
->text('emails.orders.shipped_plain');
}
视图数据
通常情况下,可能想要在渲染邮件的 HTML 内容时传递一些数据到视图中
有两种方法传递数据到时视图中
第一种,在 mailable 类中定义的所有 public 的属性都将自动传递到视图中
例如:
/**
* 订单实例。
*
* @var Order
*/
public $order;
/**
* 创建一个消息实例。
*
* @param AppModelsOrder $order
* @return void
*/
public function __construct(Order $order)
{
$this->order = $order;
}
当数据被设置成为 public 属性之后,它将被自动传递到您的视图中,因此可以像在 Blade 模板中直接访问它们
div>
Price: {{ $order->price }}
/div>
第二种方法,通过 with 方法
如果想要在邮件数据发送到模板前自定义它们的格式,您可以使用 with 方法来手动传递数据到视图中
一般情况下,您还是需要通过 mailable 类的构造函数来传递数据;不过,您应该将它们定义为 protected 或private以防止它们被自动传递到视图中。然后,在您调用 with 方法的时候,可以以数组的形式传递您想要传递给模板的数据
/**
* 订单实例。
*
* @var AppModelsOrder
*/
protected $order;
/**
* 创建一个消息实例。
*
* @param AppModelsOrder $order
* @return void
*/
public function __construct(Order $order)
{
$this->order = $order;
}
/**
* 构造消息。
*
* @return $this
*/
public function build()
{
return $this->view('emails.orders.shipped')
->with([
'orderName' => $this->order->name,
'orderPrice' => $this->order->price,
]);
}
当数据使用 with 方法传递后,您便可在您的视图中使用它们,此时,您便可以像在 Blade 模板中那样来访问它们
div>
Price: {{ $orderPrice }}
/div>
发送邮件
若要发送邮件,使用 Mail facade 的 to 方法。 to 方法接受 邮件地址、用户实例或用户集合。
Mail::to('876280441@qq.com')
->send(new OrderShipped());
//send是去指定要发送哪一个邮件类
版权声明:
作者:linrux
链接:https://www.tot7.cn/technology/php/70.html
来源:Code林
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论