Package org.javlo.mailing
Class CRLFOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- java.io.FilterOutputStream
-
- org.javlo.mailing.CRLFOutputStream
-
- All Implemented Interfaces:
Closeable
,Flushable
,AutoCloseable
public class CRLFOutputStream extends FilterOutputStream
A Filter for use with SMTP or other protocols in which lines must end with CRLF. Converts every "isolated" occourency of \r or \n with \r\n RFC 2821 #2.3.7 mandates that line termination is CRLF, and that CR and LF must not be transmitted except in that pairing. If we get a naked LF, convert to CRLF.
-
-
Field Summary
Fields Modifier and Type Field Description protected static int
LAST_WAS_CR
protected static int
LAST_WAS_LF
protected static int
LAST_WAS_OTHER
protected boolean
startOfLine
protected int
statusLast
Counter for number of last (0A or 0D).-
Fields inherited from class java.io.FilterOutputStream
out
-
-
Constructor Summary
Constructors Constructor Description CRLFOutputStream(OutputStream out)
Constructor that wraps an OutputStream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
checkCRLFTerminator()
Ensure that the stream is CRLF terminated.void
write(byte[] buffer, int offset, int length)
void
write(int b)
Writes a byte to the stream Fixes any naked CR or LF to the RFC 2821 mandated CFLF pairing.protected void
writeChunk(byte[] buffer, int offset, int length)
Provides an extension point for ExtraDotOutputStream to be able to add dots at the beginning of new lines.-
Methods inherited from class java.io.FilterOutputStream
close, flush, write
-
Methods inherited from class java.io.OutputStream
nullOutputStream
-
-
-
-
Field Detail
-
statusLast
protected int statusLast
Counter for number of last (0A or 0D).
-
LAST_WAS_OTHER
protected static final int LAST_WAS_OTHER
- See Also:
- Constant Field Values
-
LAST_WAS_CR
protected static final int LAST_WAS_CR
- See Also:
- Constant Field Values
-
LAST_WAS_LF
protected static final int LAST_WAS_LF
- See Also:
- Constant Field Values
-
startOfLine
protected boolean startOfLine
-
-
Constructor Detail
-
CRLFOutputStream
public CRLFOutputStream(OutputStream out)
Constructor that wraps an OutputStream.- Parameters:
out
- the OutputStream to be wrapped
-
-
Method Detail
-
write
public void write(int b) throws IOException
Writes a byte to the stream Fixes any naked CR or LF to the RFC 2821 mandated CFLF pairing.- Overrides:
write
in classFilterOutputStream
- Parameters:
b
- the byte to write- Throws:
IOException
- if an error occurs writing the byte
-
writeChunk
protected void writeChunk(byte[] buffer, int offset, int length) throws IOException
Provides an extension point for ExtraDotOutputStream to be able to add dots at the beginning of new lines.- Throws:
IOException
- See Also:
FilterOutputStream.write(byte[], int, int)
-
write
public void write(byte[] buffer, int offset, int length) throws IOException
- Overrides:
write
in classFilterOutputStream
- Throws:
IOException
- See Also:
FilterOutputStream.write(byte[], int, int)
-
checkCRLFTerminator
public void checkCRLFTerminator() throws IOException
Ensure that the stream is CRLF terminated.- Throws:
IOException
- if an error occurs writing the byte
-
-