2013-03-05 25 views
10

Tôi đã tìm thấy thông tin mâu thuẫn về nhồi nhét khi gửi email.SMTP dot nhồi .. khi nào và ở đâu để làm điều đó?

  1. thứ một dấu chấm nếu dòng chứa một dấu chấm duy nhất (để tránh chấm dứt sớm)
  2. thứ một dấu chấm để mỗi dòng stat bắt đầu với một dấu chấm
  3. thứ một dấu chấm để (1) và mỗi dòng một phần của phần tin nhắn được trích dẫn chỉ có thể là

Có ai có thể làm rõ?

Trả lời

17

Theo tiêu chuẩn SMTP RFC 5321, phần 4.5.2:

http://tools.ietf.org/html/rfc5321#section-4.5.2

Để cho phép tất cả người dùng soạn văn bản được truyền đi một cách minh bạch, thủ tục sau đây được sử dụng:

  • Trước khi gửi một dòng văn bản thư, máy khách SMTP kiểm tra ký tự đầu tiên của dòng. Nếu đó là một khoảng thời gian, một khoảng thời gian bổ sung được chèn vào đầu dòng.
  • Khi một dòng văn bản thư được máy chủ SMTP nhận, nó sẽ kiểm tra dòng. Nếu dòng này bao gồm một khoảng thời gian, nó được coi là kết thúc của chỉ báo thư. Nếu ký tự đầu tiên là dấu chấm và có các ký tự khác trên dòng, ký tự đầu tiên sẽ bị xóa.

Vì vậy, từ ba điểm trong câu hỏi của bạn, câu hỏi thứ hai là đúng.

+0

Nếu máy chủ chỉ xóa một trong hai dấu chấm trên một dòng, nó sẽ thực hiện chính xác tiêu chuẩn cụ thể. Khi ký tự đầu tiên của dòng tin nhắn gốc là một khoảng thời gian, khách hàng sẽ thêm một số khác trước khi gửi tin nhắn. Sau đó, máy chủ sẽ loại bỏ khoảng thời gian đã thêm. – chus

+1

Tôi có nghĩa là nó chỉ loại bỏ một trong hai NẾU DÒNG B WHNG CHỈ CÓ HAI DOT. Ví dụ: \ r \ n .. \ r \ n Nhưng không phải cho bất kỳ dòng nào khác. – transilvlad

+0

Tôi nghĩ bây giờ tôi có thể thấy được vấn đề. Giải pháp phụ thuộc vào tác nhân bạn đang thực hiện (MTA, MDA). Có thể bạn có thể xác định các máy chủ không tuân thủ RFC và xử lý thông báo để bảo toàn văn bản gốc. – chus

0

Trong giao thức SMTP mail được chấm dứt bởi một dấu chấm duy nhất và một ký tự xuống dòng (s)

Trong thuật ngữ đơn giản cái gì đó như:

\ r \ n \ r \ n

.

Các nhân vật:

CR LF DOT CR LF

Tương ứng với một dấu chấm ở đầu dòng.

Trong trường hợp dữ liệu thư chứa một tệp. Ở đầu dòng và được theo sau bởi một ký tự dòng mới thì giao thức SMTP sẽ coi nó là kết thúc thư và do đó chỉ một phần của thư sẽ được gửi.

Vì vậy, toàn bộ ý tưởng là để tránh các loại tình huống này bằng cách đệm thêm một dấu chấm.

+3

Điều này không trả lời được câu hỏi của tôi. – transilvlad

2

Câu trả lời thực tế: Nếu bạn đang sử dụng định dạng có thể in được trích dẫn thì hãy luôn dịch một dấu chấm thành = 2E. Bạn không thể dựa vào tất cả các máy chủ smtp thực hiện việc xóa dấu chấm chính xác.

Nếu bạn muốn cho rằng toàn thế giới tuân thủ các tiêu chuẩn thì hãy đi với câu trả lời 2 ở trên.

+0

Càng có nhiều thời gian trôi qua các mớ hỗn độn không phù hợp hơn tôi thấy và càng nhớ câu trả lời của bạn. Cảm ơn. – transilvlad

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