我用163和qq已經(jīng)實現(xiàn)了
很狗血的是我頭一天搞了半天總是發(fā)送失敗弄砍,說連接不上服務(wù)攀隔,第二天到公司一發(fā)送就成功了,不知道是不是應(yīng)該重新訪問以下項目或者重啟服務(wù)
我推測是因為 .env文件修改了沒有生效菲驴,我在子系統(tǒng)做的項目,所以需要結(jié)束項目重新運行命令:php artisan serve , 每次修改了 .env 文件都要
進(jìn)入正題
需要注意的是:需要開啟POP3和SMTP服務(wù)。開啟方式如下:
網(wǎng)頁登錄郵箱题翰,點擊進(jìn)入設(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用于配置默認(rèn)的郵件發(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是郵箱所在主機(jī)咆疗,比如我們使用163郵箱漓帚,對應(yīng)值是smtp.163.com,使用QQ郵箱的話午磁,對應(yīng)值是smtp.qq.com尝抖。
3. port用于配置郵箱發(fā)送服務(wù)端口號,比如一般默認(rèn)值是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)然也可以科汗。