Package ch.qos.logback.core.net

## Class SMTPAppenderBase<E>

- java.lang.Object
- - ch.qos.logback.core.spi.ContextAwareBase
  - - ch.qos.logback.core.AppenderBase<E>
    - - ch.qos.logback.core.net.SMTPAppenderBase<E>

All Implemented Interfaces:
  `Appender<E>`, `ContextAware`, `FilterAttachable<E>`, `LifeCycle`

Direct Known Subclasses:
  `SMTPAppender`, `SMTPAppender`

    public abstract class SMTPAppenderBase<E>
    extends AppenderBase<E>

An abstract class that provides support for sending events to an email address.

See http://logback.qos.ch/manual/appenders.html#SMTPAppender for further documentation.

Author:
  Ceki Gülcü, Sébastien Pennec

### Field Summary

Fields
`protected CyclicBufferTracker<E>` `cbTracker`
`protected Discriminator<E>` `discriminator`
`protected EventEvaluator<E>` `eventEvaluator`
`protected Layout<E>` `layout`
`protected javax.mail.Session` `session`
`protected Layout<E>` `subjectLayout`

### Fields inherited from class ch.qos.logback.core.AppenderBase

`name, started`

### Fields inherited from class ch.qos.logback.core.spi.ContextAwareBase

`context`

### Constructor Summary

Constructors
`SMTPAppenderBase()`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `addTo​(java.lang.String to)`
`protected void` `append​(E eventObject)` Perform SMTPAppender specific appending actions, delegating some of them to a subclass and checking if the event triggers an e-mail to be sent.
`boolean` `checkEntryConditions()` This method determines if there is a sense in attempting to append.
`protected abstract boolean` `eventMarksEndOfLife​(E eventObject)`
`protected abstract void` `fillBuffer​(CyclicBuffer<E> cb, java.lang.StringBuffer sbuf)`
`java.lang.String` `getCharsetEncoding()`
`CyclicBufferTracker<E>` `getCyclicBufferTracker()`
`Discriminator<E>` `getDiscriminator()`
`java.lang.String` `getFrom()` Returns value of the From option.
`java.lang.String` `getJndiLocation()`
`Layout<E>` `getLayout()`
`java.lang.String` `getLocalhost()`
`java.lang.String` `getPassword()`
`java.lang.String` `getSmtpHost()` Returns value of the SMTPHost option.
`java.lang.String` `getSMTPHost()` Alias for getSmtpHost().
`int` `getSmtpPort()` See `setSmtpPort(int)`
`int` `getSMTPPort()` Alias for `getSmtpPort()`
`java.lang.String` `getSubject()` Returns value of the Subject option.
`java.util.List<java.lang.String>` `getToAsListOfString()`
`java.util.List<PatternLayoutBase<E>>` `getToList()` Returns value of the toList option.
`java.lang.String` `getUsername()`
`boolean` `isAsynchronousSending()`
`boolean` `isSessionViaJNDI()`
`boolean` `isSSL()`
`boolean` `isSTARTTLS()`
`protected abstract PatternLayoutBase<E>` `makeNewToPatternLayout​(java.lang.String toPattern)`
`protected abstract Layout<E>` `makeSubjectLayout​(java.lang.String subjectStr)` return a layout for the subject string as appropriate for the module.
`protected void` `sendBuffer​(CyclicBuffer<E> cb, E lastEventObject)` Send the contents of the cyclic buffer as an e-mail message.
`void` `setAsynchronousSending​(boolean asynchronousSending)` By default, SMTAppender transmits emails asynchronously.
`void` `setCharsetEncoding​(java.lang.String charsetEncoding)` Set the character set encoding of the outgoing email messages.
`void` `setCyclicBufferTracker​(CyclicBufferTracker<E> cbTracker)`
`void` `setDiscriminator​(Discriminator<E> discriminator)`
`void` `setEvaluator​(EventEvaluator<E> eventEvaluator)` The EventEvaluator option takes a string value representing the name of the class implementing the `EventEvaluator` interface.
`void` `setFrom​(java.lang.String from)` The From option takes a string value which should be a e-mail address of the sender.
`void` `setJndiLocation​(java.lang.String jndiLocation)` Set the location where a `Session` resource is located in JNDI.
`void` `setLayout​(Layout<E> layout)`
`void` `setLocalhost​(java.lang.String localhost)` Set the "mail.smtp.localhost" property to the value passed as parameter to this method.
`void` `setPassword​(java.lang.String password)`
`void` `setSessionViaJNDI​(boolean sessionViaJNDI)` If set to true, a `Session` resource will be retrieved from JNDI.
`void` `setSmtpHost​(java.lang.String smtpHost)` The smtpHost option takes a string value which should be a the host name of the SMTP server that will send the e-mail message.
`void` `setSMTPHost​(java.lang.String smtpHost)` Alias for smtpHost
`void` `setSmtpPort​(int port)` The port where the SMTP server is running.
`void` `setSMTPPort​(int port)` Alias for `setSmtpPort(int)`.
`void` `setSSL​(boolean ssl)`
`void` `setSTARTTLS​(boolean startTLS)`
`void` `setSubject​(java.lang.String subject)` The Subject option takes a string value which should be a the subject of the e-mail message.
`void` `setUsername​(java.lang.String username)`
`void` `start()` Start the appender
`void` `stop()`
`protected abstract void` `subAppend​(CyclicBuffer<E> cb, E eventObject)`

### Methods inherited from class ch.qos.logback.core.AppenderBase

`addFilter, clearAllFilters, doAppend, getCopyOfAttachedFiltersList, getFilterChainDecision, getName, isStarted, setName, toString`

### Methods inherited from class ch.qos.logback.core.spi.ContextAwareBase

`addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, getDeclaredOrigin, getStatusManager, setContext`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface ch.qos.logback.core.spi.ContextAware

`addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, setContext`

### Field Detail

#### subjectLayout

    protected Layout<E> subjectLayout

#### layout

    protected Layout<E> layout

#### session

    protected javax.mail.Session session

#### eventEvaluator

    protected EventEvaluator<E> eventEvaluator

#### discriminator

    protected Discriminator<E> discriminator

#### cbTracker

    protected CyclicBufferTracker<E> cbTracker

### Constructor Detail

#### SMTPAppenderBase

    public SMTPAppenderBase()

### Method Detail

#### makeSubjectLayout

    protected abstract Layout<E> makeSubjectLayout​(java.lang.String subjectStr)

return a layout for the subject string as appropriate for the module. If the subjectStr parameter is null, then a default value for subjectStr should be used.

Parameters:
  `subjectStr` -
Returns:
  a layout as appropriate for the module

#### start

    public void start()

Start the appender

Specified by:
  `start` in interface `LifeCycle`
Overrides:
  `start` in class `AppenderBase<E>`

#### append

    protected void append​(E eventObject)

Perform SMTPAppender specific appending actions, delegating some of them to a subclass and checking if the event triggers an e-mail to be sent.

Specified by:
  `append` in class `AppenderBase<E>`

#### eventMarksEndOfLife

    protected abstract boolean eventMarksEndOfLife​(E eventObject)

#### subAppend

    protected abstract void subAppend​(CyclicBuffer<E> cb,
                                      E eventObject)

#### checkEntryConditions

    public boolean checkEntryConditions()

This method determines if there is a sense in attempting to append.

It checks whether there is a set output target and also if there is a set layout. If these checks fail, then the boolean value `false` is returned.

#### stop

    public void stop()

Specified by:
  `stop` in interface `LifeCycle`
Overrides:
  `stop` in class `AppenderBase<E>`

#### getToList

    public java.util.List<PatternLayoutBase<E>> getToList()

Returns value of the toList option.

#### sendBuffer

    protected void sendBuffer​(CyclicBuffer<E> cb,
                              E lastEventObject)

Send the contents of the cyclic buffer as an e-mail message.

#### fillBuffer

    protected abstract void fillBuffer​(CyclicBuffer<E> cb,
                                       java.lang.StringBuffer sbuf)

#### getFrom

    public java.lang.String getFrom()

Returns value of the From option.

#### getSubject

    public java.lang.String getSubject()

Returns value of the Subject option.

#### setFrom

    public void setFrom​(java.lang.String from)

The From option takes a string value which should be a e-mail address of the sender.

#### setSubject

    public void setSubject​(java.lang.String subject)

The Subject option takes a string value which should be a the subject of the e-mail message.

#### setSMTPHost

    public void setSMTPHost​(java.lang.String smtpHost)

Alias for smtpHost

Parameters:
  `smtpHost` -

#### setSmtpHost

    public void setSmtpHost​(java.lang.String smtpHost)

The smtpHost option takes a string value which should be a the host name of the SMTP server that will send the e-mail message.

#### getSMTPHost

    public java.lang.String getSMTPHost()

Alias for getSmtpHost().

#### getSmtpHost

    public java.lang.String getSmtpHost()

Returns value of the SMTPHost option.

#### setSMTPPort

    public void setSMTPPort​(int port)

Alias for `setSmtpPort(int)`.

Parameters:
  `port` -

#### setSmtpPort

    public void setSmtpPort​(int port)

The port where the SMTP server is running. Default value is 25.

Parameters:
  `port` -

#### getSMTPPort

    public int getSMTPPort()

Alias for `getSmtpPort()`

Returns:

#### getSmtpPort

    public int getSmtpPort()

See `setSmtpPort(int)`

Returns:

#### getLocalhost

    public java.lang.String getLocalhost()

#### setLocalhost

    public void setLocalhost​(java.lang.String localhost)

Set the "mail.smtp.localhost" property to the value passed as parameter to this method.

Useful in case the hostname for the client host is not fully qualified and as a consequence the SMTP server rejects the clients HELO/EHLO command.

Parameters:
  `localhost` -

#### getCyclicBufferTracker

    public CyclicBufferTracker<E> getCyclicBufferTracker()

#### setCyclicBufferTracker

    public void setCyclicBufferTracker​(CyclicBufferTracker<E> cbTracker)

#### getDiscriminator

    public Discriminator<E> getDiscriminator()

#### setDiscriminator

    public void setDiscriminator​(Discriminator<E> discriminator)

#### isAsynchronousSending

    public boolean isAsynchronousSending()

#### setAsynchronousSending

    public void setAsynchronousSending​(boolean asynchronousSending)

By default, SMTAppender transmits emails asynchronously. For synchronous email transmission set asynchronousSending to 'false'.

Parameters:
  `asynchronousSending` - determines whether sending is done asynchronously or not
Since:
  1.0.4

#### addTo

    public void addTo​(java.lang.String to)

#### makeNewToPatternLayout

    protected abstract PatternLayoutBase<E> makeNewToPatternLayout​(java.lang.String toPattern)

#### getToAsListOfString

    public java.util.List<java.lang.String> getToAsListOfString()

#### isSTARTTLS

    public boolean isSTARTTLS()

#### setSTARTTLS

    public void setSTARTTLS​(boolean startTLS)

#### isSSL

    public boolean isSSL()

#### setSSL

    public void setSSL​(boolean ssl)

#### setEvaluator

    public void setEvaluator​(EventEvaluator<E> eventEvaluator)

The EventEvaluator option takes a string value representing the name of the class implementing the `EventEvaluator` interface. A corresponding object will be instantiated and assigned as the event evaluator for the SMTPAppender.

#### getUsername

    public java.lang.String getUsername()

#### setUsername

    public void setUsername​(java.lang.String username)

#### getPassword

    public java.lang.String getPassword()

#### setPassword

    public void setPassword​(java.lang.String password)

#### getCharsetEncoding

    public java.lang.String getCharsetEncoding()

Returns:
  the charset encoding value
See Also:
  `setCharsetEncoding(String)`

#### getJndiLocation

    public java.lang.String getJndiLocation()

#### setJndiLocation

    public void setJndiLocation​(java.lang.String jndiLocation)

Set the location where a `Session` resource is located in JNDI. Default value is "java:comp/env/mail/Session".

Parameters:
  `jndiLocation` -
Since:
  1.0.6

#### isSessionViaJNDI

    public boolean isSessionViaJNDI()

#### setSessionViaJNDI

    public void setSessionViaJNDI​(boolean sessionViaJNDI)

If set to true, a `Session` resource will be retrieved from JNDI. Default is false.

Parameters:
  `sessionViaJNDI` - whether to obtain a javax.mail.Session by JNDI
Since:
  1.0.6

#### setCharsetEncoding

    public void setCharsetEncoding​(java.lang.String charsetEncoding)

Set the character set encoding of the outgoing email messages. The default encoding is "UTF-8" which usually works well for most purposes.

Parameters:
  `charsetEncoding` -

#### getLayout

    public Layout<E> getLayout()

#### setLayout

    public void setLayout​(Layout<E> layout)