Renyi-Fan

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

一、总结

一句话总结:

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

 

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

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

 

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

vendor的lavavel里面:legend3\vendor\laravel\framework\src\Illuminate\Mail\Mailer.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 App\Http\Controllers; 
    use App\Http\Requests; 
    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"]);

 

-

 

 

 

 

分类:

技术点:

相关文章:

  • 2021-12-02
  • 2021-12-26
  • 2021-10-02
  • 2021-12-26
  • 2022-01-18
  • 2021-07-06
  • 2021-09-02
猜你喜欢
  • 2021-12-26
  • 2021-12-07
  • 2021-07-13
  • 2021-12-26
  • 2021-10-03
  • 2021-12-02
  • 2022-02-09
相关资源
相似解决方案