# Laravel5.4怎么使用163郵箱發送郵件
## 前言
在Web開發中,郵件發送功能是常見的需求之一。Laravel作為一款流行的PHP框架,提供了簡潔優雅的郵件發送功能。本文將詳細介紹如何在Laravel5.4中使用163郵箱發送郵件,包含配置、代碼實現以及常見問題解決。
## 一、環境準備
### 1.1 確保Laravel版本
首先確認你的Laravel版本是5.4:
```bash
php artisan --version
# 應輸出:Laravel Framework 5.4.*
Laravel郵件功能需要SwiftMailer
庫,通常已包含在框架中。如果缺失可通過Composer安裝:
composer require swiftmailer/swiftmailer
ML_DRIVER=smtp
ML_HOST=smtp.163.com
ML_PORT=465
ML_USERNAME=yourname@163.com
ML_PASSWORD=your_authorization_code
ML_ENCRYPTION=ssl
ML_FROM_ADDRESS=yourname@163.com
ML_FROM_NAME=YourAppName
參數 | 值 | 說明 |
---|---|---|
ML_DRIVER | smtp | 使用SMTP協議 |
ML_HOST | smtp.163.com | 163SMTP服務器 |
ML_PORT | 465⁄994 | SSL加密端口 |
ML_USERNAME | 完整郵箱地址 | 如user@163.com |
ML_PASSWORD | 授權碼 | 非郵箱密碼 |
ML_ENCRYPTION | ssl | 加密方式 |
創建路由和控制器:
// routes/web.php
Route::get('/sendmail', 'MailController@send');
// app/Http/Controllers/MailController.php
use Mail;
use App\Mail\TestMail;
public function send()
{
$email = 'recipient@example.com';
Mail::to($email)->send(new TestMail());
return '郵件已發送';
}
php artisan make:mail TestMail
編輯生成的app/Mail/TestMail.php
:
public function build()
{
return $this->view('emails.test')
->subject('測試郵件主題');
}
resources/views/emails/test.blade.php
:
<!DOCTYPE html>
<html>
<head>
<title>測試郵件</title>
</head>
<body>
<h1>你好,{{ $user }}!</h1>
<p>這是一封來自Laravel的測試郵件。</p>
</body>
</html>
public function build()
{
return $this->view('emails.test')
->attach(public_path('files/document.pdf'), [
'as' => 'document.pdf',
'mime' => 'application/pdf',
]);
}
修改發送方式:
Mail::to($email)->queue(new TestMail());
需要先配置隊列驅動,推薦使用Redis或數據庫隊列。
Swift_TransportException: Expected response code 250 but got code "535"
解決方案: 1. 確認使用的是授權碼而非郵箱密碼 2. 檢查郵箱地址是否完整(包含@163.com) 3. 重新生成授權碼嘗試
Connection could not be established with host smtp.163.com
解決方案: 1. 檢查服務器防火墻是否放行465端口 2. 嘗試使用端口25(非SSL) 3. 更換網絡環境測試
在郵件類中設置編碼:
public function build()
{
return $this->view('emails.test')
->subject('測試郵件')
->withSwiftMessage(function ($message) {
$message->getHeaders()
->addTextHeader('Content-Type', 'text/html; charset=utf-8');
});
}
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
use App\Mail\OrderShipped;
class MailController extends Controller
{
public function send()
{
$user = [
'name' => '張三',
'email' => 'customer@example.com'
];
try {
Mail::to($user['email'])
->cc('admin@example.com')
->bcc('manager@example.com')
->send(new OrderShipped($user));
return response()->json(['status' => 'success']);
} catch (\Exception $e) {
return response()->json([
'status' => 'error',
'message' => $e->getMessage()
], 500);
}
}
}
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class OrderShipped extends Mailable
{
use Queueable, SerializesModels;
public $user;
public function __construct($user)
{
$this->user = $user;
}
public function build()
{
return $this->view('emails.orders.shipped')
->subject('您的訂單已發貨')
->attach(storage_path('app/public/invoice.pdf'), [
'as' => 'invoice.pdf',
'mime' => 'application/pdf',
]);
}
}
通過本文的詳細介紹,你應該已經掌握了在Laravel5.4中使用163郵箱發送郵件的方法。從基礎配置到高級功能實現,再到問題排查,這些知識將幫助你構建可靠的郵件發送功能。實際開發中,記得根據業務需求進行適當調整,并始終關注郵件發送的性能和安全性。
如果你遇到本文未覆蓋的問題,建議查閱以下資源: - Laravel5.4郵件文檔 - 163郵箱幫助中心 - SwiftMailer官方文檔 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。