• legend3---lavarel中使用qq邮箱发送邮件


    legend3---lavarel中使用qq邮箱发送邮件

    一、总结

    一句话总结:

    第一步:配置邮箱做服务器,比如qq邮箱,网易163邮箱
    第二步:配置lavarel的配置文件
    第三部:写邮件发送代码就去看lavarel的手册,很详细

    1、在qq邮箱中配置IMAP/SMTP服务的时候的授权码的作用是什么?

    方便第三方登录:在lavarel中使用邮箱用户名加授权码登录以便发送邮件

    2、lavarel中的mail源文件的位置在哪?

    vendor的lavavel里面:legend3vendorlaravelframeworksrcIlluminateMailMailer.php

    3、lavarel中发送邮件的方法主要是什么方法?

    send方法:Mail::send('mail.reg',[],function ($message){
        //发送邮件
        public function send_email(){
            Mail::send('mail.reg',[],function ($message){
                $message->to('404006308@qq.com');
                $message->subject('亲爱的用户,恭喜您注册成功');
            });
        }

    二、lavarel中使用qq邮箱发送邮件

    第一步:配置邮箱做服务器,比如qq邮箱

    在邮箱设置开启POP3/SMTP服务和IMAP/SMTP服务

    会让你发送短信验证,然后给你授权码(在lavarel中配置需要)

    (这张是用的别人的图片)

     

     

    第二步:配置lavarel的配置文件

    配置.env

    配置config中的mail


    第三部:写邮件发送代码就去看lavarel的手册,很详细

    最简单的发送代码

        //发送邮件
        public function send_email(){
            Mail::raw('邮件测试',function ($message){
                $message->to('404006308@qq.com');
            });
        }

    成功实例

    带上主题

        //发送邮件
        public function send_email(){
            Mail::raw('邮件测试',function ($message){
                $message->to('404006308@qq.com');
                $message->subject('亲爱的用户,恭喜您注册成功');
            });
        }

    5、发送视图代码及实例

    send方法

        //发送邮件
        public function send_email(){
            Mail::send('mail.reg',[],function ($message){
                $message->to('404006308@qq.com');
                $message->subject('亲爱的用户,恭喜您注册成功');
            });
        }

    视图位置

    视图代码

    {{--用户注册发送邮件的模板视图--}}
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <h1>1</h1>
        <h1>1</h1>
        <h1>1</h1>
        <h1>1</h1>
        <h1>1</h1>
        <h1>1</h1>
        <h1>1</h1>
        <h1>1</h1>
        <h1>1</h1>
        <h1>1</h1>
        <h1>1</h1>
        <h1>1</h1>
        <h1>1</h1>
    </body>
    </html>

    收到的邮件结果

     

    二、Laravel自带SMTP邮件组件实现发送邮件(QQ、163、企业邮箱都可)

    转自或参考:Laravel自带SMTP邮件组件实现发送邮件(QQ、163、企业邮箱都可)
    https://blog.csdn.net/woqianduo/article/details/81024244

    生成控制器

    php artisan make::controller MailController

    配置路由

    Route::any('mail/send','MailController@send');

    在app/Http/Controllers生成了一个MailController控制器,如下所示:

    <?php 
        namespace AppHttpControllers; 
        use AppHttpRequests; 
        class MailController extends Controller { 
            //
         }

    编辑上面控制器,加入以下的逻辑处理:

    use Mail;
    class MailController{ 
        public function send() {
         $name = '我发的第一份邮件'; 
         // Mail::send()的返回值为空,所以可以其他方法进行判断 
         Mail::send('emails.test',['name'=>$name],function($message){ 
         $to = '123456789@qq.com'; $message ->to($to)->subject('邮件测试'); 
         }); 
         // 返回的一个错误数组,利用此可以判断是否发送成功
          dd(Mail::failures());
        } 
    } 

    Mail::send();需要传三个参数,第一个为引用的模板,第二个为给模板传递的变量(邮箱发送的文本内容),第三个为一个闭包,参数绑定Mail类的一个实例。

    在resources/emails下创建一个模板文件。

    {{$name}} hello world。

    好,现在在服务器上进行测试了,在地址栏输入http://localhost/mail/send(自己的访问地址),发送成功。

    1. 发送纯文本邮件

    Mail::raw('你好,我是PHP程序!', function ($message) {
        $to = '123456789@qq.com';
        $message ->to($to)->subject('纯文本信息邮件测试');
    });

    2.邮件中发送附件

    发生图片:

    {{$name}},这是一封测试邮件
    <br>
    <img src="{{$message->embedData($image,'test.jpg')}}">
    public function send(){ 
        $image = Storage::get('images/obama.jpg'); //本地文件
        //$image = 'http://www.baidu.com/sousuo/pic/sdaadar24545ssqq22.jpg';//网上图片
        Mail::send('emails.test',['image'=>$image],function($message){ 
            $to = '123456789@qq.com';
            $message->to($to)->subject('图片测试'); 
        }); 
        if(count(Mail::failures()) < 1){
         echo '发送邮件成功,请查收!'; 
        }else{
         echo '发送邮件失败,请重试!';
        } 
    }

    3. 邮件附件

    public function sendFile(){ 
        $name = '我发的第一份邮件'; 
        Mail::send('emails.test',['name'=>$name],function($message){ 
            $to = '123456789@qq.com';
            $message->to($to)->subject('邮件测试'); 
            $attachment = storage_path('xls/files/test.xls');
             // 在邮件中上传附件 
            $message->attach($attachment,['as'=>'中文文档.xls']); 
        }); 
    } 

    $message的attach方法上传附件,该方法第一个参数是附件地址,第二个参数为一些额外参数,这里我们通过as指定附件在邮件中的显示名称。

    测试如果显示文件名乱码的话,就这样写

    $message->attach($attachment,['as'=>"=?UTF-8?B?".base64_encode('中文文档')."?=.xls"]);

    -

     
  • 相关阅读:
    C系统,操作符和词法元素
    值类型和引用类型
    WPF
    C#版本进化
    快速排序
    C语言字符串
    查找
    简单快速排序
    PHP运行出现Notice : Use of undefined constant 的解决办法
    vs2010 修改注释模板
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11478389.html
Copyright © 2020-2023  润新知