Laravel发送电子邮件


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

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

句法 void send(string | array $ view,array $ data,Closure | string $ callback)
参数 * $ view(string | array) - 包含电子邮件消息的视图的名称 * $ data(array) - 要传递的数据数组 * $ callback - 一个闭包回调,它接收一个消息实例,允许您自定义邮件消息的收件人,主题和其他方面
返回 没有
描述 发送电子邮件。

在第三个参数中,$ callback closure收到的消息实例和那个实例,我们也可以调用以下函数并修改消息,如下所示。

  • $ message→subject('Welcome to the Tutorials Point');
  • $ message→from('email@example.com','Mr. Example');
  • $ message→to('email@example.com','Mr. Example');

一些不常用的方法包括 -

  • $ message→sender('email@example.com','Mr. Example');
  • $ 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→priority(2);

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

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

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

句法

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

在这种语法中,第一个参数需要一个数组。使用 文本 作为视图的键名作为键的值。

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

.ENV

MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_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 文件。

应用程序/ HTTP /控制器/ MailController.php

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class MailController extends Controller {
   public function basic_email(){
      $data = array('name'=>"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 文件中复制以下代码。

资源/视图/ mail.blade.php

<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>

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

应用程序/ HTTP / routes.php文件

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

第8步 - 访问以下URL以测试基本电子邮件。

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方法中的电子邮件地址应该是您可以从中发送电子邮件地址的电子邮件地址。通常,它应该是您的服务器上配置的电子邮件地址。