开发手册 欢迎您!
软件开发者资料库

Laravel - 发送电子邮件

Laravel发送电子邮件 - 从简单和简单的步骤学习Laravel,从基本到高级概念,包括概述,安装,应用程序结构,配置,路由,中间件,命名空间,控制器,请求,Cookie,响应,视图,刀片模板,重定向,使用数据库,错误和日志记录,表单,本地化,会话,验证,文件上传,发送电子邮件,Ajax,错误,事件处理,外墙,安全,合同,CSRF保护,身份验证,授权,工匠控制台,加密,哈希,了解发布流程。

Laravel使用免费的功能丰富的库 SwiftMailer 来发送电子邮件.使用库函数,我们可以轻松发送电子邮件而不会有太多麻烦.电子邮件模板的加载方式与视图相同,这意味着您可以使用Blade语法并将数据注入模板.

下表显示了的语法和属性发送功能

语法void send(string | array $ view,array $ data,Closure | string $ callback)
参数
  • $ view(string | array) : 包含电子邮件的视图的名称

  • $ data(array) : 要传递给视图的数据数组

  • $ callback : 一个Closure回调,它接收一个消息实例,允许你自定义邮件的收件人,主题和其他方面

返回没有
描述发送电子邮件.

在第三个参数中,$ callback闭包接收了消息实例,并且通过该实例,我们还可以调用以下函数并更改消息,如下所示.

  • $ message → 主题('欢迎来到教程点');

  • $ message → 来自('email@example.com','Mr. Example');

  • $ message →  to('email@example.com','Mr. Example');

一些不太常见的方法包括 :

  • $ message → 发件人('email@example.com','示例先生');

  • $ message →  returnPath('email@example.com');

  • $ message →  cc('email@example.com','Mr. Example');

  • $ message →  bcc('email@example.com','Mr. Example');

  • $ message →  replyTo('email@example.com','Mr. Example');

  • $ message → 优先级(2);

要附加或嵌入文件,您可以使用以下方法 :

  • $ message → 附上('path/to/attachment.txt');

  • $ message →  embed('path/to/attachment.jpg');

邮件可以HTML或文本形式发送.您可以通过传递数组来指示要在第一个参数中发送的邮件类型,如下所示.默认类型是HTML.如果要发送纯文本邮件,请使用以下语法.

语法

Mail::send([‘text’=>’text.view’], $data, $callback);

在此语法中,第一个参数采用数组.使用 text 作为视图的键名作为键的值.

示例

步骤1 : 我们现在将从Gmail帐户发送一封电子邮件,您需要在Laravel环境文件  -  .env 文件中配置您的Gmail帐户.在您的Gmail帐户中启用两步验证并创建应用专用密码,然后更改.env参数,如下所示.

.env

MAIL_DRIVER = smtpMAIL_HOST = smtp.gmail.comMAIL_PORT = 587MAIL_USERNAME = your-gmail-usernameMAIL_PASSWORD = your-application-specific-passwordMAIL_ENCRYPTION = tls

第2步 : 更改 .env 文件后,执行以下两个命令清除缓存并重新启动Laravel服务器.

php artisan config:cache

步骤3 : 通过执行以下命令创建一个名为 MailController 的控制器.

php artisan make:controller MailController --plain

第4步 : 成功执行后,您将收到以下输出 :

MailController

第5步 : 复制以下代码

app/Http/Controllers/MailController.php 文件.

app/Http/Controllers/MailController.php

"Virat Gandhi");         Mail::send(['text'=>'mail'], $data, function($message) {         $message->to('abc@gmail.com', 'Tutorials Point')->subject            ('Laravel Basic Testing Mail');         $message->from('xyz@gmail.com','Virat Gandhi');      });      echo "Basic Email Sent. Check your inbox.";   }   public function html_email() {      $data = array('name'=>"Virat Gandhi");      Mail::send('mail', $data, function($message) {         $message->to('abc@gmail.com', 'Tutorials Point')->subject            ('Laravel HTML Testing Mail');         $message->from('xyz@gmail.com','Virat Gandhi');      });      echo "HTML Email Sent. Check your inbox.";   }   public function attachment_email() {      $data = array('name'=>"Virat Gandhi");      Mail::send('mail', $data, function($message) {         $message->to('abc@gmail.com', 'Tutorials Point')->subject            ('Laravel Testing Mail with Attachment');         $message->attach('C:\laravel-master\laravel\public\uploads\image.png');         $message->attach('C:\laravel-master\laravel\public\uploads\test.txt');         $message->from('xyz@gmail.com','Virat Gandhi');      });      echo "Email Sent with attachment. Check your inbox.";   }}

第6步 : 复制 resources/views/mail.blade.php 文件中的以下代码.

resources/views/mail.blade.php

Hi, {{ $name }}

l

Sending Mail from Laravel.

第7步 : 在 app/Http/routes.php中添加以下行.

app/Http/routes.php

Route::get('sendbasicemail','MailController@basic_email');Route::get('sendhtmlemail','MailController@html_email');Route::get('sendattachmentemail','MailController@attachment_email');

第8步 : 请访问以下网址以测试基本电子邮件.

http://localhost:8000/sendbasicemail

第9步 : 输出屏幕看起来像这样.检查您的收件箱以查看基本的电子邮件输出.

发送基本电子邮件

第10步 : 访问以下URL以测试HTML电子邮件.

http://localhost:8000/sendhtmlemail

步骤11 : 输出屏幕看起来像这样.检查您的收件箱以查看html电子邮件输出.

HTML电子邮件

第12步 : 访问以下URL以测试带附件的HTML电子邮件.

http://localhost:8000/sendattachmentemail

第13步 : 你可以看到以下输出

发送电子邮件

注意 : 在 MailController.php 文件中,from方法中的电子邮件地址应该是您可以从中发送电子邮件地址的电子邮件地址.通常,它应该是您服务器上配置的电子邮件地址.