2011-07-23 32 views
6

tôi đặt một hình thức liên lạc trong trang web của tôi, và tôi có điều này trong settings.py tôiCác email_from chức năng Django send_mail không làm việc

# Email settings 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = '****' 
EMAIL_PORT = 587 

Và điều này trong views.py tôi

name = form.cleaned_data['name'] 
email = form.cleaned_data['email'] 
message = form.cleaned_data['message'] 
subject = 'Email from ' + name 
content = name + '\r\n' + email + '\r\n\r\n' + message 

send_mail(subject, content, email, ['[email protected]']) 

Tất cả đều hoạt động chính xác, tôi nhận được email có tất cả thông tin, nhưng email đến từ [email protected] mặc dù thông số from_email có số email var với email người gửi.

Nó không hoạt động theo cách đó hoặc tôi đang làm điều gì sai?

Tôi muốn nhận email từ người gửi, vì vậy y chỉ có thể trả lời email, như tôi làm trong PHP.

Cảm ơn bạn.

Trả lời

7

Gmail sẽ không cho phép bạn giả mạo nơi email đến.

cho mỗi người dùng Ian trong một similar post

Câu trả lời ngắn - bạn có thể không.

Google viết lại tiêu đề Từ và Trả lời tới trong thư bạn gửi qua dịch vụ SMTP của nó đến các giá trị có liên quan đến tài khoản gmail của bạn.

Tính năng SMTP của gmail không phải là dịch vụ mở hoặc chuyển tiếp. Nếu nó cho phép bất kỳ giá trị nào cho tiêu đề Từ, nó sẽ làm giảm đáng kể vị thế của Google với các dịch vụ spam, vì sẽ không có cách nào để xác minh thông tin đăng nhập của người gửi.

Bạn cần cân nhắc các giải pháp thay thế. Làm thế nào bạn có kế hoạch lưu trữ kịch bản/ứng dụng/trang web của bạn khi nó kết thúc: hầu như mọi giải pháp lưu trữ (shared/vps/dedicated server) sẽ được cấu hình sẵn với giải pháp chuyển email: có thể là sendmail hoặc postfix trên * nix hay IIS trên Windows.

Nếu bạn có ý định sử dụng gmail sau đó bạn có thể:

Thiết lập một chuyên dụng "[email protected]" chiếm Nếu bạn sở hữu tên miền bạn đang được cho là gửi từ, sử dụng gmail miễn phí cho tên miền, và thiết lập tài khoản "[email protected]".

+0

Vì vậy, cách duy nhất là sử dụng một máy chủ khác để gửi email hoặc chỉ để nó như vậy? – ramono

+0

Có, vì những lý do được nêu trong bài đăng của iAn, các máy chủ của Google sẽ không cho phép bạn tự ý đặt nội dung của nguồn email. – Andy

+0

Tôi đã chỉnh sửa chế độ xem của mình như vậy 'send_mail (chủ đề + "-" + from_email, tin nhắn, from_email, [' [email protected] ']) 'để nhận email người gửi như một phần của chủ đề – Josh

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