2015-03-30 25 views
9

Trong Django EmailMultiAlternatives documentation không có gì về cách thêm tiêu đề như "định dạng" hoặc "Trả lời" trong EmailMultiAlternatives. Phải mất một lúc để tôi tìm ra và tôi gửi bài đăng này để giúp những người khác tiết kiệm thời gian của họ.Thêm tiêu đề vào Django EmailMultiAlternatives

Như bạn có thể thấy trong mã nguồn của django, EmailMultiAlternatives được kế thừa từ EmailMessage, vì vậy chúng có cùng thông số trong hàm khởi tạo init. Bằng cách này, chúng ta có thể thêm tiêu đề như:

msg = EmailMultiAlternatives(
    subject, message, from_email, to_list, 
    headers={'Reply-To': "[email protected]", 'format': 'flowed'} 
) 
+5

Bạn nên viết giải pháp này làm giải pháp. –

+0

@VanniTotaro Tôi đánh giá cao đề xuất của bạn và tôi biết tôi có thể nhận được danh tiếng hơn bằng cách trả lời câu hỏi, nhưng khi tôi có thể làm cho nó thành một bài đăng ngắn gọn, tại sao tôi nên chia nó thành hai bài đăng dài hơn và lãng phí thời gian của người khác? – 1man

+7

Vâng, trước hết câu hỏi này sẽ trở thành "trả lời", hoặc nếu tôi đang tìm kiếm một câu trả lời tôi có thể kết thúc bỏ qua này bởi vì rõ ràng nó là một câu hỏi chưa được trả lời. Hơn nữa, tôi nghĩ rằng các quy tắc ở đây không khuyến khích mẫu bài đăng Q + A này. BTW cảm ơn bạn, bởi vì tôi đã sử dụng giải pháp tốt đẹp của bạn. –

Trả lời

0

Trở lại năm 2015 OP phàn nàn, rằng không có hướng dẫn trong tài liệu hướng dẫn, làm thế nào để thêm tiêu đề như "Format" và "Reply-To" trong Django mail (django .core.mail) mô-đun. Tuy nhiên hôm nay, trong khi sử dụng same documentation link. Chúng ta có thể tìm thấy mô tả và các ví dụ vào năm 2018 một cách dễ dàng:

lớpEmailMessage [source]

Các EmailMessagelớp được khởi tạo với các thông số sau (theo thứ tự nhất định, nếu các đối số vị trí được sử dụng). Tất cả tham số là tùy chọn và có thể được đặt bất kỳ lúc nào trước khi gọi phương thức send() .

  • chủ đề: Dòng chủ đề của email.
  • nội dung: Văn bản nội dung. Đây phải là một tin nhắn văn bản thuần túy.
  • from_email: Địa chỉ của người gửi. Cả hai hình thức [email protected]Fred <[email protected]> đều hợp pháp. Nếu bỏ qua, cài đặt DEFAULT_FROM_EMAIL được sử dụng.
  • đến: Danh sách hoặc bộ địa chỉ người nhận.
  • bcc: Danh sách hoặc bộ địa chỉ được sử dụng trong tiêu đề “Bcc” khi gửi email.
  • kết nối: Ví dụ phụ trợ email. Sử dụng tham số này nếu bạn muốn sử dụng cùng một kết nối cho nhiều thư. Nếu bỏ qua, một kết nối mới sẽ được tạo khi số điện thoại send() được gọi.
  • tệp đính kèm: Danh sách tệp đính kèm để đưa vào thư. Đây có thể là email.MIMEBase.MIMEBase trường hợp hoặc (filename, content, mimetype) bộ ba.
  • tiêu đề: Từ điển của các tiêu đề bổ sung để đưa vào thư. Các khóa là tên tiêu đề, các giá trị là các giá trị tiêu đề.Đó là tối đa người gọi để đảm bảo tên và giá trị tiêu đề có định dạng chính xác cho thông báo email. Thuộc tính tương ứng là extra_headers.
  • cc: Danh sách hoặc bộ địa chỉ người nhận được sử dụng trong tiêu đề “Cc” khi gửi email.

Ví dụ:

email = EmailMessage('Hello', 'Body goes here', '[email protected]', 
      ['[email protected]', '[email protected]'], ['[email protected]'], 
      headers = {'Reply-To': '[email protected]', 'format': 'flowed'}) 

Như chúng ta thấy từ các ví dụ, EmailMessageheaders luận (điển) quá, EmailMultiAlternatives theo docstring trong source code là:

A version of EmailMessage that makes it easy to send multipart/alternative 
messages. For example, including text and HTML versions of the text is 
made easier. 

Vì vậy, nếu bạn không cần một cái gì đó cụ thể, EmailMessage là tốt, bởi vì hiện tại EmailMultiAlternatives là để dễ dàng đưa văn bản và các phiên bản HTML của văn bản.

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