Tôi sắp gửi email html trong mã có thể chứa thông tin nhập của người dùng không an toàn. Tôi đã nhận thấy rằng nếu tôi html thoát khỏi chủ đề, GMail sau đó sẽ hiển thị nội dung thoát (vì vậy nếu chủ đề của tôi là "This & That"
, mà tôi khử trùng là "This & That"
, Gmail sẽ hiển thị thông tin sau). Cũng vậy với Thunderbird. Có an toàn để giả định rằng tất cả các ứng dụng email không cần HTML theo chủ đề đã thoát không?Đối tượng email có cần phải được mã HTML không?
Trả lời
Không cần mã hóa các thực thể HTML trong dòng chủ đề. Lý do mã hóa trong cơ thể HTML là nếu bạn đang sử dụng XHTML, bởi vì nó xuất phát từ XML, xử lý &
làm ký tự dành riêng.
Tuy nhiên, dòng chủ đề của email không có trong HTML, XML hoặc XHTML. Nó chỉ là văn bản thuần túy. Vì lý do này, bạn không cần phải mã hóa ký hiệu và là &
. Nếu bạn mã hóa nó, vì nó không được phân tích cú pháp dưới dạng HTML, nó sẽ được hiển thị dưới dạng mã hóa.
Nếu bạn muốn bao gồm các ký tự không phải ASCII (ví dụ: £
), thì bạn cần mã hóa toàn bộ 'phong bì' (bao gồm nội dung email) làm UTF-8.
Vì vậy, trong mã, sau đây sẽ được hiển thị như:
| Subject Line | Body
====================================
& | & | &
& | & | &
UTF-8 £ | £ | £
ASCII £ | n/a | n/a
£ | £ | £
NB: Microsoft Office có một thực hiện kỳ lạ của UTF-8, vì vậy không phải tất cả ký tự UTF-8 sẽ làm việc.
Trường Chủ đề là bên ngoài của "Nội dung HTML". Nó không liên quan gì đến HTML.
Tuy nhiên, tôi không có một tài liệu tham khảo cho việc này ...
Chủ đề của không cần phải html loại trừ tuy nhiên, họ có thể trốn thoát. Thông số SMTP gốc đã xác định rằng thư phải là ascii (RFC822 Phần 3). Điều này đã được xác nhận trong RFC2822 tuy nhiên, RFC2047 xác định tiện ích mở rộng tiêu đề cho phép bạn mã hóa các trường tiêu đề trong thư mime để cho phép văn bản không phải ascii.
Định dạng từ được mã hóa này cho phép bạn sử dụng mã hóa như utf-8 trong tiêu đề email. Ví dụ:
=?iso-8859-1?q?this=20is=20some=20text?=
Đây là phiên bản mã hóa ISO-8859-1 của "đây là một số văn bản". Phương pháp này có thể được sử dụng để kích hoạt những thứ như ký hiệu bảng Anh (£) hoặc ký tự có dấu/không phải ascii.
- 1. Phản đối trong email HTML
- 2. Có phải Erlang hướng đối tượng không?
- 3. Gửi email từ biểu mẫu html mà không cần php
- 4. Email HTML có Javascript
- 5. Tại sao mã này nhận được đối tượng 'str' này không có lỗi 'get_match_routes' thuộc tính?
- 6. Đối tượng NSString có cần phân bổ và init không?
- 7. Tại sao các đối tượng ký tự HTML cần thiết?
- 8. Dữ liệu bài đăng ajax có cần phải được mã hóa URI không?
- 9. Java có tạo mã đối tượng hoặc mã byte không?
- 10. Email HTML - Có cho phép colspan không?
- 11. đối tượng 'unicode' không thể gọi được
- 12. đối tượng nullable phải có giá trị
- 13. é HTML Mã đối tượng trong thẻ tiêu đề
- 14. Có phải xây dựng đối tượng phạm vi tĩnh đối tượng an toàn không?
- 15. góc khung (<) mà không cần kích hoạt mã html
- 16. Chuỗi Javascript không phải là đối tượng?
- 17. 'classmethod' đối tượng không phải là callable
- 18. đối tượng không phải là JSON serializable
- 19. SunToolkit.awtLock: không mã mà phải mất một khóa như vậy cần phải được gọi vào EDT
- 20. Tôi có cần phải thoát khỏi các ký tự khi gửi email không?
- 21. Có phải là một đối tượng trong JavaScript không?
- 22. IMAP PHP - Email có phải có thông báo không?
- 23. ManyRelatedManager đối tượng không phải là iterable
- 24. Python có phải là một đối tượng không?
- 25. Tại sao mã Java cần phải được biên dịch nhưng mã JavaScript không
- 26. Có cần thiết phải quấn các hàng dài khi gửi email không?
- 27. Mã PHP của tôi có được định hướng đối tượng không?
- 28. CSS: Đối tượng ẩn có thể nhấp được không?
- 29. $ .event.trigger không kích hoạt trong đối tượng không phải DOM
- 30. Có thể đặt ngắt trang vào một email HTML không?
Mặc dù bạn không cần phải mã hóa HTML đối tượng, hãy đảm bảo vệ sinh nó cho ngữ cảnh trong: tiêu đề HTTP. Xóa các ký tự ngắt dòng như '\ n' và' \ r'! –