我用163和qq已經(jīng)實現(xiàn)了
很狗血的是我頭一天搞了半天總是發(fā)送失敗,說連接不上服務(wù),第二天到公司一發(fā)送就成功了,不知道是不是應(yīng)該重新訪問以下項目或者重啟服務(wù)
我推測是因為 .env文件修改了沒有生效,我在子系統(tǒng)做的項目,所以需要結(jié)束項目重新運行命令:php artisan serve , 每次修改了 .env 文件都要
進入正題
需要注意的是:需要開啟POP3和SMTP服務(wù)。開啟方式如下:
網(wǎng)頁登錄郵箱,點擊進入設(shè)置就會看到

當(dāng)開啟成功會生成密鑰,這個東西會在配置中用到(注意這個授權(quán)碼只能看一次,以后要看只能修改,先拿小本本記下來)

給出.env中的配置
MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=25
MAIL_USERNAME=xxx@163.com
MAIL_PASSWORD=授權(quán)碼
MAIL_ENCRYPTION=
MAIL_FROM_ADDRESS=xxx@163.com
MAIL_FROM_NAME=
這些是在 config 中mail.php 用到的
1. driver用于配置默認的郵件發(fā)送驅(qū)動,Laravel支持多種郵件驅(qū)動方式,包括smtp、Mailgun、Maildrill、Amazon SES、mail和sendmail,Mailgun和Amazon SES都是收費的Maildrill目前不支持中國區(qū)用戶,這三個都是第三方郵件服務(wù)。mail驅(qū)動使用PHP提供的mail函數(shù)發(fā)送,sendmail驅(qū)動通過Sendmail/Postfix(Linux)提供的命令發(fā)送郵件,smtp驅(qū)動通過支持ESMTP的SMTP發(fā)送郵件。
就目前狀況來看,使用smtp是最明智的選擇,mail不安全,sendmail需要安裝配置Sendmail/Postfix,其他要么付費要么不能用。
2.?host是郵箱所在主機,比如我們使用163郵箱,對應(yīng)值是smtp.163.com,使用QQ郵箱的話,對應(yīng)值是smtp.qq.com。
3. port用于配置郵箱發(fā)送服務(wù)端口號,比如一般默認值是25,但如果設(shè)置SMTP使用SSL加密,該值為465。
4. from配置項包含address和name,前者表示發(fā)送郵箱,后者表示發(fā)送郵件使用的用戶名。
5. encryption表示加密類型,可以設(shè)置為null表示不使用任何加密,也可以設(shè)置為tls或ssl。
6. username表示郵箱賬號,比如yaojinbu@163.com
7. password表示上述郵箱登錄對應(yīng)登錄密碼。注意QQ郵箱的話應(yīng)該開啟POP3|SMTP服務(wù)時給的密鑰。
8. sendmail是在設(shè)置driver為sendmail時使用,用于指定sendmail命令路徑。
下邊是控制器代碼:
首先引入類
use Mail;
使用方法:
$res = ['email'=>$data['email'],'name'=>$data['email'],'token'=>$token];
Mail::send('emails.test',$res,function($message)use($res) {
????$to = $res['email'];
????$message ->to($to)->subject('歡迎注冊本網(wǎng)站,請盡快激活您的賬號!');
});
在resources/view中新建末班文件 emails/test.blade.php
{{$name}}你好,這是一封測試文件。
目前就只是發(fā)送普通文本攜帶變量,其他的比如附件當(dāng)然也可以。