Django cung cấp một framework đơn giản nhưng mạnh mẽ để xử lý email trong các ứng dụng của bạn. Trong bài viết này, chúng ta sẽ cùng đi qua các bước để gửi email bằng máy chủ SMTP của Gmail trong một dự án Django.
Hướng dẫn từng bước
1. Tạo một dự án Django
Bắt đầu bằng cách tạo một dự án Django mới có tên là gmail:
django-admin.py startproject gmail
Di chuyển vào thư mục dự án:
cd gmail
2. Cấu hình cài đặt email trong settings.py
Mở file settings.py
và thêm cấu hình sau để sử dụng Gmail làm backend gửi email:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'youremail@gmail.com' # Replace with your Gmail address
EMAIL_HOST_PASSWORD = 'your_email_password' # Use an App Password if 2FA is enabled
EMAIL_PORT = 587
Lưu ý bảo mật: Không bao giờ đưa thông tin tài khoản email vào hệ thống quản lý phiên bản (version control). Hãy sử dụng biến môi trường hoặc gói decouple của Django để quản lý các thiết lập nhạy cảm một cách an toàn.
3. Khởi chạy Django Shell
Mở shell tương tác của Django để thử gửi email:
python manage.py shell
4. Gửi một Email
Trong shell, nhập các dòng sau để gửi email:
from django.core.mail import EmailMessage email = EmailMessage( subject='Subject', body='This is the body of the email.', to=['recipient@example.com'] # Replace with the recipient's email
) email.send()
Nếu shell trả về 1, điều đó có nghĩa là email đã được gửi thành công.
Các vấn đề thường gặp và cách khắc phục
Bật quyền truy cập Gmail
Nếu gặp lỗi xác thực, hãy đảm bảo rằng bạn đã:
- Bật quyền truy cập "ứng dụng kém an toàn" (không khuyến khích dùng trong môi trường production)
- HOẶC dùng Mật khẩu Ứng dụng (App Password) nếu tài khoản Gmail của bạn đã bật xác minh 2 bước (2FA).
Cách tạo mật khẩu ứng dụng (App Password)
- Truy cập: https://myaccount.google.com/apppasswords
- Tạo mật khẩu cho “Mail” và “Other (Tên tùy chỉnh)”
- Sử dụng mật khẩu đã tạo ở trường EMAIL_HOST_PASSWORD trong
settings.py
Kết luận
Sử dụng máy chủ SMTP của Gmail với Django là một cách đơn giản và hiệu quả để gửi email trong quá trình phát triển hoặc gửi email giao dịch. Tuy nhiên, đối với môi trường production, bạn nên cân nhắc sử dụng các dịch vụ gửi email chuyên biệt như SendGrid, Mailgun hoặc Amazon SES để đảm bảo khả năng mở rộng và độ tin cậy cao hơn.