Lỗi
Khi tôi thử gửi mail trên django bằng gmail smtp. Đây là file Setting.py:
EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_HOST_USER = 'myemail@gmail.com' EMAIL_HOST_PASSWORD = 'password' EMAIL_USE_TLS = True
Và khi test thử thì tôi nhận được lỗi như sau:
File "C:\Users\Dell OPT 5060\AppData\Local\Programs\Python\Python37\lib\smtplib.py", line 642, in auth raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials b10-20020a17090a5a0a00b0020b7de675a4sm1837886pjd.41 - gsmtp')
Nguyên nhân do hiện nay, khi bất kỳ người gửi email trực tiếp qua SMTP đều sẽ nhận sẽ nhận lỗi “Username and Password not accepted”. Điều này là do Google đang yêu cầu mật khẩu cụ thể cho từng ứng dụng. Điều này sẽ an toàn hơn là chia sẻ tài khoản và mật khẩu của tài khoản chính. Vì vậy, để khắc phục lỗi trên thì chỉ cần tạo mật khẩu cho ứng dụng là được.
Khắc phục
# Bật xác minh 2 lớp.
Chúng ta phải bật Xác minh 2 bước lên thì mới truy cập được Mật khẩu ứng dụng:
Truy cập https://myaccount.google.com/security để bật xác minh 2 bước:
# Tạo Mật khẩu ứng dụng
Sau khi bật Xác minh 2 bước, mục Mật khẩu ứng dụng (App password) sẽ xuất hiện bên dưới. Click vào đề thiết lập:
Sau khi nhấn Tạo (Generate), Google sẽ cung cấp cho bạn 1 mật khẩu ứng dụng. Bạn nhớ lưu lại mật khẩu này để cấu hình SMTP Gmail.
Ở đây chỉ cần lấy 16 ký tự password trên thay thế tại EMAIL_HOST_PASSWORD
trong file Setting.py là được.