laravel-admin:使用laravel的邮件系统

使用Laravel自带SMTP邮件组件实现发送邮件

使用的qq邮箱,在使用QQ邮箱的时候需要开启POP3和SMTP服务。
在这里插入图片描述
当开启成功会生成密钥,这个东西会在配置中用到
在这里插入图片描述
当需要记录发信记录时,你还需要进行相关配置
在这里插入图片描述

打开config/mail.php,进行配置

<?php
return [
	//driver用于配置默认的邮件发送驱动
    'driver' => env('MAIL_DRIVER', 'smtp'),
	//host是邮箱所在主机,比如我们使用163邮箱,对应值是smtp.163.com,使用QQ邮箱的话,对应值是smtp.qq.com
    'host' => env('MAIL_HOST', 'smtp.qq.com'),
	//port用于配置邮箱发送服务端口号,比如一般默认值是25,但如果设置SMTP使用SSL加密,该值为465。
    'port' => env('MAIL_PORT', 25),
	//from配置项包含address和name,前者表示发送邮箱,后者表示发送邮件使用的用户名。
    'from' => ['address' => '[email protected]','name' => '董秘'],
    //encryption表示加密类型,可以设置为null表示不使用任何加密,也可以设置为tls或ssl。
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
	//username表示邮箱账号
    'username' => env('MAIL_USERNAME'),
	//password表示上述邮箱登录对应登录密码。注意QQ邮箱的话应该开启POP3|SMTP服务时给的密钥。
    'password' => env('MAIL_PASSWORD'),
    //sendmail是在设置driver为sendmail时使用,用于指定sendmail命令路径。
    'sendmail' => '/usr/sbin/sendmail -bs',
    'markdown' => [
        'theme' => 'default',
        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
    'log_channel' => env('MAIL_LOG_CHANNEL'),

];

打开.env文件进行配置

MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=25
MAIL_USERNAME=2502187899@qq.com
MAIL_PASSWORD=qq的密匙
MAIL_ENCRYPTION=null

发送纯文本邮件

        $form->text('title', '提问人名称');
        $form->email('email', '提问人');
        $form->textarea('content', '提问内容');
        $form->text('re_title', '回复标题')->rules('required');
        $form->textarea('re_content', '回复内容')->rules('required');
 // 在表单提交前调用
	$form->submitted(function (Form $form) {
    
		});
 	 // 在保存前调用,发送邮件
        $form->saving(function (Form $form) {
            $this->name = $form->email;
            $this->retitle=$form->re_title;
            $re_content=$form->re_content;
            Mail::raw( $re_content, function ($message) {
                $message ->to($this->name)->subject($this->retitle);
            });
        });
        //保存后回调,更改数据库数据
        $form->saved(function (Form $form) {
         // 返回的一个错误数组,利用此可以判断是否发送成功
            if(count(Mail::failures()) < 1){
                $id= $form->model()->id;
                $flight = TpInvestEmail::find($id);
                $flight->re_email = 1;
                $flight->re_time = time();
                $flight->save();
            }
            else{
                $id= $form->model()->id;
                $flight = TpInvestEmail::find($id);
                $flight->re_email = 0;
                $flight->save();

            }
        });

猜你喜欢

转载自blog.csdn.net/touxian51552/article/details/86594869