2013-03-05 18 views
10

Ho trovato informazioni contrastanti sul riempimento di punti durante la trasmissione di un messaggio di posta elettronica.riempimento punto SMTP .. quando e dove farlo?

  1. roba un punto se la linea contiene un singolo punto (per evitare cessazione anticipata)
  2. roba un punto per ogni linea stat inizia con un punto
  3. roba un punto di (1) e per ogni linea parte di una parte di messaggio stampabile solo

Qualcuno può chiarire?

risposta

17

Secondo lo standard RFC 5321 SMTP, 4.5.2:

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

Per consentire tutto il testo utente composto da trasmettere in modo trasparente, sono utilizzate le seguenti procedure:

  • Prima di inviare una riga di testo della posta, il client SMTP controlla il primo carattere della linea. Se si tratta di un periodo, viene inserito un ulteriore periodo all'inizio della riga.
  • Quando una riga di testo di posta viene ricevuta dal server SMTP, controlla la linea. Se la linea è composta da un singolo periodo, viene considerata come l'indicatore di fine posta. Se il primo carattere è un punto e ci sono altri caratteri sulla linea, il primo carattere viene cancellato.

Così, dai tre punti della sua domanda, la seconda è di destra.

+0

Se un server rimuove solo uno su due punti su una linea, sta facendo esattamente ciò che specifica lo standard. Quando il primo carattere di una riga del messaggio originale è un punto, il client ne aggiunge un altro prima di inviare il messaggio. Quindi, il server rimuove il periodo aggiunto. – chus

+1

Intendevo che ne rimuova solo uno su due SE L'INTERA LINEA CONTIENE SOLO DUE PUNTI. Esempio: \ r \ n .. \ r \ n Ma non per qualsiasi altra linea. – transilvlad

+0

Penso che ora capisco il punto. La soluzione dipende dall'agente che stai implementando (MTA, MDA). Potrebbe essere possibile identificare i server che non sono conformi a RFC e elaborare il messaggio per preservare il testo originale. – chus

0

Nel protocollo SMTP la posta è terminato da un singolo punto e un carattere di fine riga (s)

In termini semplici, qualcosa di simile a:

\ r \ n \ r \ n

.

I personaggi:

CR LF DOT CR LF

Che corrisponde a un punto singolo all'inizio di una riga.

Nel caso in cui i dati di posta contengano un singolo. All'inizio della riga e seguito da un nuovo carattere di linea, il protocollo SMTP lo considererà come terminazione della posta e quindi solo una parte della posta verrà recapitata.

Quindi l'idea è di evitare questo tipo di situazione inserendo un punto in più.

+3

Questo non risponde alla mia domanda. – transilvlad

2

La risposta pratica: se si utilizza il formato stampabile quotato, tradurre sempre un punto in = 2E. Non è possibile fare affidamento su tutti i server smtp che eseguono correttamente la rimozione dei punti.

Se si desidera assumere che il mondo intero sia conforme agli standard, consultare la risposta 2 sopra.

+0

Più tempo passa, più i messaggi non conformi vedo e più ricordo la tua risposta. Grazie. – transilvlad