个人学习查阅摸索所得,以下代码未必是最优的,但确实实现了相应的功能,这点对现阶段的我来说已经足够了,仅供参考。
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Mail;
class MailController extends Controller
{
public function send()
{
$name = '你个大傻逼';
$flag = Mail::send('email.test',['name'=>$name],function($message){
$to = '2100758437@qq.com';
$message ->to($to)->subject('夸你呢');
});
if($flag){
echo '发送邮件成功,请查收!';
}else{
echo '发送邮件失败,请重试!';
}
}
}
.env邮件部分设置
MAIL_DRIVER=
MAIL_HOST=
MAIL_PORT=
MAIL_USERNAME=xxxxxxxxx@qq.com
MAIL_PASSWORD=*********** //这里填写QQ邮箱smtp的授权码,并不是邮箱登录密码
MAIL_ENCRYPTION=ssl //QQ邮箱填ssl
config/mail.php
注意(driver,host,port,encryption)这几个参数QQ邮箱都是这么填写的。
sendmail参数是环境sendmail的地址,我的环境是win7 xampp,所以这么填写.
很多教程里都是填写的'sendmail' => '/usr/sbin/sendmail -bs'
,这个是linux自带的sendmail地址,根据你的环境填写,我就卡在这个地方,查阅了很多资料,才拐过弯来。
<?php
return [
'driver' => 'smtp',
'host' =>'smtp.qq.com',
'port' => 465,
'from' => array('address' => 'xxxxxxxxx@qq.com', 'name' => '深圳人民发来贺电'),
'encryption' => 'ssl',
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => 'D:\xampp\sendmail\sendmail.exe -t',
];
如果还是不行,请修改以下内容
.evn和config/app.php
检查APP_KEY和'key'两个参数的值,两个值必须一样,我卡在这个地方也有半个小时了。
php.ini设置
由于我自己的环境是win7 xampp,而xampp集成了sendmail功能。
搜索[mail function]
,根据自己的情况修改以下内容:
修改完成之后记得去掉参数前面的分号;
smtp_port=465
sendmail_from = xxxxxxxxx@qq.com
sendmail_path = "\"D:\xampp\sendmail\sendmail.exe\" -t"
sendmail.ini
该文件在xampp根目录下的sendmail文件夹,根据自己的情况修改以下内容。
修改完成之后记得去掉参数前面的分号;
smtp_server=smtp.qq.com
smtp_port=465
smtp_ssl=ssl
其他邮箱设置类似,基本只需要修改配置文件里的host
值和相应的帐号密码。