Laravel - 发送电子邮件

  • 简述

    Laravel 使用免费的功能丰富的库SwiftMailer发送电子邮件。使用库函数,我们可以轻松地发送电子邮件,而无需太多麻烦。电子邮件模板的加载方式与视图相同,这意味着您可以使用 Blade 语法并将数据注入模板中。
    下表显示了语法和属性send功能 -
    句法 void send(字符串|数组$view,数组$data,闭包|字符串$callback)
    参数
    • $view(string|array) - 包含电子邮件的视图名称
    • $data(array) - 传递给视图的数据数组
    • $callback - 接收消息实例的闭包回调,允许您自定义邮件消息的收件人、主题和其他方面
    返回 -
    描述 发送电子邮件。
    在第三个参数中, $callback 闭包接收到消息实例,通过该实例,我们还可以调用以下函数并更改消息,如下所示。
    • $message → subject('欢迎来到 JC2182');
    • $message → from('email@example.com', '示例先生');
    • $message → to('email@example.com', '例子先生');
    一些不太常见的方法包括 -
    • $message → sender('email@example.com', '示例先生');
    • $message → returnPath('email@example.com');
    • $message → cc('email@example.com', '示例先生');
    • $message → bcc('email@example.com', '示例先生');
    • $message→replyTo('email@example.com', '示例先生');
    • $消息 → 优先级(2);
    要附加或嵌入文件,您可以使用以下方法 -
    • $message→attach('path/to/attachment.txt');
    • $message → embed('path/to/attachment.jpg');
    邮件可以以 HTML 或文本形式发送。您可以通过传递数组来指示要在第一个参数中发送的邮件类型,如下所示。默认类型是 HTML。如果您想发送纯文本邮件,请使用以下语法。

    句法

    
    Mail::send([‘text’=>’text.view’], $data, $callback);
    
    在此语法中,第一个参数采用数组。使用text作为视图的键名称作为键的值。

    例子

    步骤 1- 我们现在将从 Gmail 帐户发送一封电子邮件,为此您需要在 Laravel 环境文件中配置您的 Gmail 帐户- .env文件。在您的 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− 成功执行后,您将收到以下输出 −
    邮件控制器
    步骤 5- 将以下代码复制到
    app/Http/Controllers/MailController.php文件。
    app/Http/Controllers/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', 'JC2182')->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', 'JC2182')->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', 'JC2182')->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
    
    <h1>Hi, {{ $name }}</h1>
    l<p>Sending Mail from Laravel.</p>
    
    步骤 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− 访问以下 URL 来测试基本电子邮件。
    
    http://localhost:8000/sendbasicemail
    
    步骤 9− 输出屏幕将如下所示。检查您的收件箱以查看基本的电子邮件输出。
    基本电子邮件已发送
    步骤 10− 访问以下 URL 来测试 HTML 电子邮件。
    
    http://localhost:8000/sendhtmlemail
    
    步骤 11− 输出屏幕将如下所示。检查您的收件箱以查看 html 电子邮件输出。
    HTML 电子邮件
    步骤 12− 访问以下 URL 来测试带附件的 HTML 电子邮件。
    
    http://localhost:8000/sendattachmentemail
    
    步骤 13- 您可以看到以下输出
    Email Sent
    Note− 在MailController.php在 from 方法中归档的电子邮件地址应该是您可以发送电子邮件地址的电子邮件地址。一般来说,它应该是您服务器上配置的电子邮件地址。