Cách sửa lỗi SSL CERTIFICATE_VERIFY_FAILED khi gửi Email bằng Django trên macOS

Views: 43 24/05/2026 09:04
Cách sửa lỗi SSL CERTIFICATE_VERIFY_FAILED khi gửi Email bằng Django trên macOS

Khi gửi email bằng Django thông qua Gmail SMTP trên macOS, nhiều người sẽ gặp lỗi:

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:
unable to get local issuer certificate (_ssl.c:1032)

Lỗi này thường xuất hiện khi:

  • dùng Python cài từ python.org

  • sử dụng Django send_mail()

  • gửi email qua Gmail SMTP

  • Python chưa được cài CA Certificates

Bài viết này sẽ hướng dẫn cách xử lý triệt để.

Nguyên nhân lỗi

Python cần CA Certificates để xác thực SSL khi kết nối tới máy chủ SMTP của Gmail.

Trên macOS, một số phiên bản Python không tự động cài certificates nên sẽ phát sinh lỗi verify SSL.

Ví dụ lỗi đầy đủ:

SSLCertVerificationError:
[SSL: CERTIFICATE_VERIFY_FAILED]
certificate verify failed:
unable to get local issuer certificate (_ssl.c:1032)

Cấu hình gửi mail Django đúng chuẩn

Trong file settings.py:

EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_USE_TLS = True

EMAIL_HOST_USER = "yourgmail@gmail.com"
EMAIL_HOST_PASSWORD = "your-app-password"

DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

Gmail hiện yêu cầu dùng App Password thay vì mật khẩu Gmail thông thường.

Cách sửa lỗi SSL trên macOS

Bước 1: Chạy Install Certificates.command

Mở Terminal và chạy:

/Applications/Python\ 3.13/Install\ Certificates.command

Nếu dùng Python phiên bản khác:

/Applications/Python\ 3.12/Install\ Certificates.command

hoặc:

/Applications/Python\ 3.11/Install\ Certificates.command

Script này sẽ:

  • tải CA certificates

  • cấu hình SSL cho Python

  • fix lỗi verify certificate

Bước 2: Restart Django

Sau khi cài certificates:

python manage.py runserver

 

Kiểm tra gửi mail Django

Test nhanh trong Django shell:

python manage.py shell

from django.core.mail import send_mail

send_mail(
    "Test Email",
    "Hello Django",
    None,
    ["yourgmail@gmail.com"],
    fail_silently=False,
)

Nếu không còn lỗi SSL là đã thành công.

Ví dụ code form liên hệ Django

 

from django.core.mail import send_mail
from django.conf import settings

send_mail(
    subject="[WEB] Liên hệ mới",
    message="Đây là email test",
    from_email=settings.DEFAULT_FROM_EMAIL,
    recipient_list=[settings.EMAIL_HOST_USER],
    fail_silently=False,
)

Trường hợp vẫn còn lỗi

Nếu vẫn bị lỗi SSL, cài thêm thư viện certifi:

pip install certifi

Sau đó thêm vào đầu settings.py:

import ssl
import certifi

ssl._create_default_https_context = lambda: ssl.create_default_context(
    cafile=certifi.where()
)


Kết luận

Lỗi:

SSL: CERTIFICATE_VERIFY_FAILED

không phải do Django hay Gmail, mà do Python trên macOS thiếu CA Certificates.

Chỉ cần chạy:

/Applications/Python\ 3.13/Install\ Certificates.command

là phần lớn trường hợp sẽ được xử lý hoàn toàn.

django ssl certificate verify failed python ssl certificate verify failed macos django send mail gmail lỗi ssl unable to get local issuer certificate django fix ssl cert python 3.13 macos django gmail smtp error install certificates.command python macos django send_mail gmail