2009-03-03 34 views
12

Tôi đang sử dụng máy chủ SMTP của Gmail để gửi email từ người dùng trang web của tôi.Email Django

Đây là những thiết lập mặc định trong settings.py tôi

EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'pwd' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 
SERVER_EMAIL = EMAIL_HOST_USER 
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER 

Nếu tôi muốn có một người sử dụng để gửi email, tôi trọng các thiết lập và gửi email sử dụng email của Django gửi phương pháp. Khi một ngoại lệ xảy ra trong hệ thống, tôi nhận được một email từ [email protected] Đôi khi tôi nhận được email từ một số người dùng đã đăng nhập. Điều này cũng có thể có nghĩa là khi người dùng nhận được email được gửi từ trang web của tôi, nó có địa chỉ được gửi khác với người dùng thực tế.

Cần phải làm gì để tránh tình huống này?

Trả lời

22

Django chỉ sử dụng settings.DEFAULT_FROM_EMAIL khi bất kỳ thư gửi các chức năng vượt qua None hoặc chuỗi rỗng như địa chỉ người gửi . Điều này có thể được xác minh trong django/core/mail.py.

Khi có một ngoại lệ unhandled Django gọi mail_admins() chức năng trong django/core/mail.py mà luôn luôn sử dụng settings.SERVER_EMAIL và là chỉ gửi đến địa chỉ được liệt kê trong settings.ADMINS. Điều này cũng có thể được xác minh trong django/core/mail.py.

duy nhất nơi khác Django tự gửi e-mail là nếu settings.SEND_BROKEN_LINK_EMAILS là True, sau đó CommonMiddleware sẽ gửi thư đến tất cả các địa chỉ được liệt kê trong settings.MANAGERS và người gửi e-mail là settings.SERVER_EMAIL.

Do đó, lần duy nhất người dùng thông thường sẽ nhận được e-mail từ trang web của bạn là khi bạn gọi send_mail(). Vì vậy, luôn chuyển địa chỉ thực như đối số from_mail và bạn sẽ tránh người dùng nhận email từ cài đặt .SERVER_EMAIL hoặc cài đặt.DEFAULT_FROM_EMAIL.

Lưu ý phụ: đăng ký django ít nhất là một ví dụ về thiết bị cắm Django sẽ gửi thư từ cài đặt.DEFAULT_FROM_EMAIL vì vậy trong các trường hợp như thế này bạn cần đảm bảo đó là địa chỉ email thích hợp như hỗ trợ @ yoursite.com hoặc [email protected]

+0

Cảm ơn tất cả sự trợ giúp. –

Các vấn đề liên quan