laravel8 邮件发送 以qq邮箱来举例
一、開啟POP3和SMTP服務
在
qq郵箱 設置 賬戶下?
2. 按照要求發送短信后會獲取一個秘鑰 (要保存好,避免麻煩的重復獲取)?
二、使用步驟
1.對?Laravel?框架中郵件發送的配置文件進行修改:
?.env 文件:
MAIL_MAILER=smtp MAIL_HOST=smtp.qq.com MAIL_PORT=465 MAIL_USERNAME=你的郵箱 MAIL_PASSWORD=前面獲取的秘鑰 MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS=你的郵箱 MAIL_FROM_NAME=郵件標題?config/mail.php 文件:
return [
‘driver’ => env(‘MAIL_DRIVER’, ‘smtp’),
‘host’ => env(‘MAIL_HOST’, ‘smtp.mailgun.org’),
‘port’ => env(‘MAIL_PORT’, 587),
‘from’ => [
‘address’ => env(“MAIL_USERNAME”, “”),
‘name’ => env(“MAIL_FROM_NAME”)
],
‘encryption’ => env(‘MAIL_ENCRYPTION’),
‘username’ => env(‘MAIL_USERNAME’),
‘password’ => env(‘MAIL_PASSWORD’),
‘sendmail’ => ‘/usr/sbin/sendmail -bs’,
‘pretend’ => env(‘MAIL_PRETEND’, false),
];
2、生產控制器、配置路由
php artisan make:controller MailController
Route::get(‘mail/send’,‘MailController@sendMail’);
?3.編輯控制器、加入以下代碼:
// 記得使用內置的郵件類 use Illuminate\Support\Facades\Mail; public function sendMail() {$name = '這是郵件發送的標題'; // Mail::send()的返回值為空,所以可以其他方法進行判斷 // Mail::send();需要傳三個參數;// 第一個為引用的模板// 第二個為給模板傳遞的變量(郵箱發送的文本內容)// 第三個為一個閉包,參數綁定Mail類的一個實例。Mail::send('emails',['name'=>$name],function($message){ $to = 'itlaowen@qq.com'; $message ->to($to)->subject('郵件測試'); }); // 返回的一個錯誤數組,利用此可以判斷是否發送成功dd(Mail::failures()); }4、由于上面👆指定了郵件發送的視圖層、所以去創建一個view
這是測試郵件!! {{$name}}5、測試
訪問:http://localhost/mail/send 如果返回一個空數組則表示郵件發送成功。
6、報錯:stream_socket_client() 、certificate verify failed
具體報錯如下:
stream_socket_client(): SSL operation failed with code 1. OpenSSL
Error messages: error:14090086:SSL
routines:ssl3_get_server_certificate:certificate verify failed
原因:
php openssl 沒有加載 ca 證書 , 去下載個 ca 證書然后添加進去即可
解決:
查看phpinfo()、檢查openssl.cafile的文件是否存在
不存在的話進行如下操作
1、找到自己的 php 的安裝目錄
2、進入目錄:cd php/etc/
3、下載 ca 證書:wget http://curl.haxx.se/ca/cacert.pem
4、查看目錄:pwd
5、編輯 php.ini:vim php.ini
6、修改 openssl.cafile 的路徑 openssl.cafile=/usr/local/php/etc/cacert.pem
解決laravel 8 發送郵件提示: cannot sendmessage without a sender address
總結
以上是生活随笔為你收集整理的laravel8 邮件发送 以qq邮箱来举例的全部內容,希望文章能夠幫你解決所遇到的問題。