• 邮件发送


    説明:

    本人用的是Laravel5.5

    我将以 163 邮箱为例,展示如何用 Laravel 内置的邮件发送类来发送邮件

    163郵箱SMTP服务器地址:smtp.163.com(端口25)

    注意:配置config/mail.php和.env配置文件時用的郵箱密碼要使用郵箱客户端授权密码,不用能常规的密码,否則會報錯

    1.安裝Guzzle HTTP 函数库,使用 Composer 包管理器安装:

    注意:安裝前將composer鏡像切換國内,安裝過程可能會報錯,可能是composer源的問題,多重複安裝幾遍

    composer require guzzlehttp/guzzle

    2.在 config/mail.php,修改以下配置:

    建议在.env文件进行配置,默认的配置文件不要改动

    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'smtp.163.com'),
    'port' => env('MAIL_PORT', 25),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'm1376075****@163.com'),
        'name' => env('MAIL_FROM_NAME', 'm1376075****@163.com'),
    ],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME','m1376075****@163.com'),
    'password' => env('MAIL_PASSWORD','****'),//這裏的密碼使用郵箱客户端授权密码,不用能常规的密码,本人在此踩過坑

     3.配置.env文件

    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.163.com
    MAIL_PORT=25
    MAIL_USERNAME=你的163邮箱地址
    MAIL_PASSWORD=你的163邮箱地址对应的授权密码(不是登录密码
    MAIL_ENCRYPTION=ssl
    MAIL_FROM_ADDRESS=你的163邮箱地址
    MAIL_FROM_NAME=发送邮件使用的用户名

    • driver用于配置默认的邮件发送驱动,我们用SMTP(Simple Message Transfer Protocol)简单邮件传输协议
    • host是邮箱所在主机,比如我们使用163邮箱,对应值是smtp.163.com,使用QQ邮箱的话,对应值是smtp.qq.com
    • port用于配置邮箱发送服务端口号,比如一般默认值是25,但如果设置SMTP使用SSL加密,该值为465
    • username表示邮箱账号
    • password表示上述邮箱对应的授权密码
    • encryption表示加密类型,可以设置为null表示不使用任何加密,也可以设置为tls或ssl。
    • from配置项包含address和name,前者表示发送邮箱,后者表示发送邮件使用的用户名。

    使用163邮箱做的发送,需登录163邮箱开启POP3和SMTP服务,以及生成授权密码。

    3.添加一個測試用路由

    Route::group(['prefix' => 'admin'], function () {
        $namespacePrefix="\App\Http\Controllers\Admin\";
        //mail 測試
        Route::get('sendmail',['uses' => $namespacePrefix . 'EmailController@sendMail', 'as' => 'sendMail']);
    });

    4.controller

    <?php
    
    namespace AppHttpControllersAdmin;
    
    use IlluminateHttpRequest;
    use AppHttpControllersController;
    use IlluminateSupportFacadesMail;
    use AppMailSendEmail;
    
    class EmailController extends Controller
    {
        public $email_message = 'this is a test mail';
    
        public function sendMail()
        {
            Mail::to('fgf163163@163.com')->send(new SendEmail($this->email_message));
    
            return 'success';
        }
    
    
    }

    5.在AppMail下新建SendEmail.php

    <?php
    
    namespace AppMail;
    
    use AppOrder;
    use IlluminateBusQueueable;
    use IlluminateMailMailable;
    use IlluminateQueueSerializesModels;
    
    class SendEmail extends Mailable
    {
        use Queueable, SerializesModels;
    
        /**
         * order 实例。
         *
         * @var Order
         */
        protected $email_message;
    
        /**
         * 创建一个新消息实例。
         *
         * @return void
         */
        public function __construct($email_message)
        {
            $this->email_message = $email_message;
        }
    
        /**
         * 构建消息。
         *
         * @return $this
         */
        public function build()
        {
            return $this->view('emails.test')
                ->with([
                    'email_message' => $this->email_message,
                ]);
        }
    }

    6.在resources/views/emails下新建test.blade.php模板文件

    <!doctype html>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
    </head>
    <body>
        <div>
            {{$email_message}}
        </div>
    </body>
    </html>

    7.訪問路由

    http://127.0.0.1:8000/admin/sendmail

     查看郵箱,是否收到郵件

    文檔地址:https://learnku.com/docs/laravel/5.5/mail/1321

    如果单纯发送纯文本邮件可以参考:https://blog.csdn.net/qq175023117/article/details/85317291

  • 相关阅读:
    Threaten Model
    什么是虚拟主机
    http代理服务器
    什么是https
    缓存的实现原理
    Cookie和Session
    HTTP协议详解
    心路历程——毕设程序mr跑不通的问题
    bash: hadoop:command not found
    Mapreduce 测试自带实例 wordcount
  • 原文地址:https://www.cnblogs.com/clubs/p/10640682.html
Copyright © 2020-2023  润新知