Laravel - Gửi Email
Laravel sử dụng thư viện giàu tính năng miễn phí SwiftMailerđể gửi email. Sử dụng chức năng thư viện, chúng ta có thể dễ dàng gửi email mà không gặp quá nhiều phức tạp. Các mẫu e-mail được tải giống như các dạng xem, có nghĩa là bạn có thể sử dụng cú pháp Blade và đưa dữ liệu vào các mẫu của mình.
Bảng sau đây cho thấy cú pháp và thuộc tính của send chức năng -
Cú pháp | void send (string | array $ view, array $ data, Closure | string $ callback) |
Thông số |
|
Lợi nhuận | không có gì |
Sự miêu tả | Gửi email. |
Trong đối số thứ ba, phiên bản thông báo $ callback closeure đã nhận và với cá thể đó, chúng ta cũng có thể gọi các hàm sau và thay đổi thông báo như hình bên dưới.
- $ message → subject ('Chào mừng đến với Điểm Hướng dẫn');
- $ message → from ('[email protected] ',' Mr. Ví dụ ');
- $ message → to ('[email protected] ',' Mr. Ví dụ ');
Một số phương pháp ít phổ biến hơn bao gồm:
- $ message → sender ('[email protected] ',' Mr. Ví dụ ');
- $ message → returnPath ('[email protected] ');
- $ message → cc ('[email protected] ',' Mr. Ví dụ ');
- $ message → bcc ('[email protected] ',' Mr. Ví dụ ');
- $ message → replyTo ('[email protected] ',' Mr. Ví dụ ');
- $ message → ưu tiên (2);
Để đính kèm hoặc nhúng tệp, bạn có thể sử dụng các phương pháp sau:
- $ message → attachment ('path / to / attachment.txt');
- $ message → nhúng ('path / to / attachment.jpg');
Thư có thể được gửi dưới dạng HTML hoặc văn bản. Bạn có thể chỉ ra loại thư mà bạn muốn gửi trong đối số đầu tiên bằng cách chuyển một mảng như hình dưới đây. Loại mặc định là HTML. Nếu bạn muốn gửi thư văn bản thuần túy thì hãy sử dụng cú pháp sau.
Cú pháp
Mail::send([‘text’=>’text.view’], $data, $callback);
Trong cú pháp này, đối số đầu tiên nhận một mảng. Sử dụngtext làm tên khóa của dạng xem dưới dạng giá trị của khóa.
Thí dụ
Step 1 - Bây giờ chúng tôi sẽ gửi một email từ tài khoản Gmail và bạn cần phải định cấu hình tài khoản Gmail của mình trong tệp môi trường Laravel - .envtập tin. Bật xác minh 2 bước trong tài khoản Gmail của bạn và tạo mật khẩu dành riêng cho ứng dụng, sau đó thay đổi thông số .env như hình dưới đây.
.env
MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls
Step 2 - Sau khi thay đổi .env tập tin thực hiện hai lệnh dưới đây để xóa bộ nhớ cache và khởi động lại máy chủ Laravel.
php artisan config:cache
Step 3 - Tạo một bộ điều khiển được gọi là MailController bằng cách thực hiện lệnh sau.
php artisan make:controller MailController --plain
Step 4 - Sau khi thực hiện thành công, bạn sẽ nhận được kết quả sau:
Step 5 - Sao chép mã sau vào
app/Http/Controllers/MailController.php tập tin.
app/Http/Controllers/MailController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class MailController extends Controller {
public function basic_email() {
$data = array('name'=>"Virat Gandhi");
Mail::send(['text'=>'mail'], $data, function($message) {
$message->to('[email protected]', 'Tutorials Point')->subject
('Laravel Basic Testing Mail');
$message->from('[email protected]','Virat Gandhi');
});
echo "Basic Email Sent. Check your inbox.";
}
public function html_email() {
$data = array('name'=>"Virat Gandhi");
Mail::send('mail', $data, function($message) {
$message->to('[email protected]', 'Tutorials Point')->subject
('Laravel HTML Testing Mail');
$message->from('[email protected]','Virat Gandhi');
});
echo "HTML Email Sent. Check your inbox.";
}
public function attachment_email() {
$data = array('name'=>"Virat Gandhi");
Mail::send('mail', $data, function($message) {
$message->to('[email protected]', 'Tutorials Point')->subject
('Laravel Testing Mail with Attachment');
$message->attach('C:\laravel-master\laravel\public\uploads\image.png');
$message->attach('C:\laravel-master\laravel\public\uploads\test.txt');
$message->from('[email protected]','Virat Gandhi');
});
echo "Email Sent with attachment. Check your inbox.";
}
}
Step 6 - Sao chép mã sau vào resources/views/mail.blade.php tập tin.
resources/views/mail.blade.php
<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>
Step 7 - Thêm các dòng sau vào app/Http/routes.php.
app/Http/routes.php
Route::get('sendbasicemail','MailController@basic_email');
Route::get('sendhtmlemail','MailController@html_email');
Route::get('sendattachmentemail','MailController@attachment_email');
Step 8 - Truy cập URL sau để kiểm tra email cơ bản.
http://localhost:8000/sendbasicemail
Step 9- Màn hình xuất sẽ giống như thế này. Kiểm tra hộp thư đến của bạn để xem kết quả email cơ bản.
Step 10 - Truy cập URL sau để kiểm tra email HTML.
http://localhost:8000/sendhtmlemail
Step 11- Màn hình xuất sẽ giống như thế này. Kiểm tra hộp thư đến của bạn để xem đầu ra email html.
Step 12 - Truy cập URL sau để kiểm tra email HTML có tệp đính kèm.
http://localhost:8000/sendattachmentemail
Step 13 - Bạn có thể xem kết quả sau
Note - Trong MailController.phpgửi địa chỉ email trong phương thức from phải là địa chỉ email mà bạn có thể gửi địa chỉ email. Nói chung, nó phải là địa chỉ email được định cấu hình trên máy chủ của bạn.