org.apache.jmeter.protocol.smtp.sampler.protocol

## Class SendMailCommand

- java.lang.Object
- - org.apache.jmeter.protocol.smtp.sampler.protocol.SendMailCommand

    public class SendMailCommand
    extends Object

This class performs all tasks necessary to send a message (build message, prepare connection, send message). Provides getter-/setter-methods for an SmtpSampler-object to configure transport and message settings. The send-mail-command itself is started by the SmtpSampler-object.

### Constructor Summary

Constructors
Constructor and Description
`SendMailCommand()` Standard-Constructor

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addAttachment(File attachment)` Adds an attachment to current message - to be called by SmtpSampler-object
`void` `addHeader(String headerName, String headerValue)` Adds a header-part to current HashMap of headers - to be called by SmtpSampler-object
`void` `clearAttachments()` Clear all attachments for current message
`void` `clearHeaders()` Deletes all current headers in HashMap
`void` `execute()` Processes prepareMessage() and execute()
`void` `execute(javax.mail.Message message)` Sends message to mailserver, waiting for delivery if using synchronous mode.
`List<File>` `getAttachments()` Returns all attachment for current message - standard getter
`String` `getConnectionTimeout()` Returns connection timeout for the SMTP-connection - returns the default connection timeout if no value has been supplied.
`CollectionProperty` `getHeaders()` Returns headers for current message - standard getter
`String` `getPassword()` Returns password to authenticate at the mailserver - standard getter
`List<javax.mail.internet.InternetAddress>` `getReceiverBCC()` Returns receivers of current message as `InternetAddress` ("bcc") - standard getter
`List<javax.mail.internet.InternetAddress>` `getReceiverCC()` Returns receivers of current message as `InternetAddress` ("cc") - standard getter
`String` `getSender()` Returns sender-address for current message - standard getter
`String` `getSmtpPort()` Returns port to be used for SMTP-connection (standard 25 or 465) - standard getter
`String` `getSmtpServer()` Returns FQDN or IP of SMTP-server to be used to send message - standard getter
`String` `getSubject()` Returns subject for current message - standard getter
`String` `getTimeout()` Returns timeout for the SMTP-connection - returns the default timeout if no value has been supplied.
`String` `getTlsProtocolsToUse()`
`String` `getUsername()` Returns username to authenticate at the mailserver - standard getter
`boolean` `getUseSSL()` Returns if SSL is used to send message - standard getter
`boolean` `getUseStartTLS()` Returns if StartTLS is used to transmit message - standard getter
`boolean` `isEnforceStartTLS()` Returns if StartTLS is enforced to secure the connection, i.e.
`boolean` `isSynchronousMode()` Returns if synchronous-mode is used for current message (i.e.
`boolean` `isTrustAllCerts()` Returns if sampler should trust all certificates - standard getter
`boolean` `isUseAuthentication()` Returns if authentication is used to access the mailserver - standard getter
`javax.mail.Message` `prepareMessage()` Prepares message prior to be sent via execute()-method, i.e.
`void` `setAttachments(List<File> attachments)` Adds attachments to current message
`void` `setConnectionTimeOut(String connectionTimeOut)`
`void` `setEmlMessage(String emlMessage)` Sets eml-message to be sent
`void` `setEnableDebug(boolean selected)`
`void` `setEnforceStartTLS(boolean enforceStartTLS)` Instructs object to enforce StartTLS and not to fallback to plain SMTP-connection - to be called by SmtpSampler-object
`void` `setHeaderFields(CollectionProperty headerFields)` Sets headers for current message
`void` `setMailBody(String body)` Set the mail body.
`void` `setPassword(String password)` Sets password to authenticate at the mailserver - to be called by SmtpSampler-object
`void` `setPlainBody(boolean plainBody)` Set whether to send a plain body (i.e.
`void` `setReceiverBCC(List<javax.mail.internet.InternetAddress> receiverBCC)` Sets receivers of current message ("bcc") - to be called by SmtpSampler-object
`void` `setReceiverCC(List<javax.mail.internet.InternetAddress> receiverCC)` Sets receivers of current message ("cc") - to be called by SmtpSampler-object
`void` `setReceiverTo(List<javax.mail.internet.InternetAddress> receiverTo)` Sets receivers of current message ("to") - to be called by SmtpSampler-object
`void` `setReplyTo(List<javax.mail.internet.InternetAddress> replyTo)`
`void` `setSender(String sender)` Sets the sender-address for the current message - to be called by SmtpSampler-object
`void` `setSmtpPort(String smtpPort)` Sets port to be used for SMTP-connection (standard 25 or 465) - to be called by SmtpSampler-object
`void` `setSmtpServer(String smtpServer)` Sets FQDN or IP of SMTP-server to be used to send message - to be called by SmtpSampler-object
`void` `setSubject(String subject)` Sets subject for current message - called by SmtpSampler-object
`void` `setSynchronousMode(boolean synchronousMode)` Sets the use of synchronous-mode (i.e.
`void` `setTimeOut(String timeOut)`
`void` `setTlsProtocolsToUse(String tlsProtocols)` Sets the list of protocols to be used on TLS handshake
`void` `setTrustAllCerts(boolean trustAllCerts)` Determines if SMTP-sampler should trust all certificates, no matter what CA - to be called by SmtpSampler-object
`void` `setTrustStoreToUse(String trustStoreToUse)` Sets the path to the local truststore to be used for SSL / StartTLS - to be called by SmtpSampler-object
`void` `setUseAuthentication(boolean useAuthentication)` Sets if authentication should be used to access the mailserver - to be called by SmtpSampler-object
`void` `setUseEmlMessage(boolean sendEmlMessage)`
`void` `setUseLocalTrustStore(boolean useLocalTrustStore)` Assigns the object to use a local truststore for SSL / StartTLS - to be called by SmtpSampler-object
`void` `setUsername(String username)` Sets username to authenticate at the mailserver - to be called by SmtpSampler-object
`void` `setUseSSL(boolean useSSL)` Sets SSL to secure the delivery channel for the message - to be called by SmtpSampler-object
`void` `setUseStartTLS(boolean useStartTLS)` Sets StartTLS to secure the delivery channel for the message - to be called by SmtpSampler-object

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

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

### Constructor Detail

#### SendMailCommand

    public SendMailCommand()

Standard-Constructor

### Method Detail

#### prepareMessage

    public javax.mail.Message prepareMessage()
                                      throws javax.mail.MessagingException,
                                             IOException

Prepares message prior to be sent via execute()-method, i.e. sets properties such as protocol, authentication, etc.

Returns:
  Message-object to be sent to execute()-method
Throws:
  `javax.mail.MessagingException` - when problems constructing or sending the mail occur
  `IOException` - when the mail content can not be read or truststore problems are detected

#### execute

    public void execute(javax.mail.Message message)
                 throws javax.mail.MessagingException,
                        InterruptedException

Sends message to mailserver, waiting for delivery if using synchronous mode.

Parameters:
  `message` - Message previously prepared by prepareMessage()
Throws:
  `javax.mail.MessagingException` - when problems sending the mail arise
  `InterruptedException` - when interrupted while waiting for delivery in synchronous mode

#### execute

    public void execute()
                 throws javax.mail.MessagingException,
                        IOException,
                        InterruptedException

Processes prepareMessage() and execute()

Throws:
  `InterruptedException` - when interrupted while waiting for delivery in synchronous modus
  `IOException` - when the mail content can not be read or truststore problems are detected
  `javax.mail.MessagingException` - when problems constructing or sending the mail occur

#### getSmtpServer

    public String getSmtpServer()

Returns FQDN or IP of SMTP-server to be used to send message - standard getter

Returns:
  FQDN or IP of SMTP-server

#### setSmtpServer

    public void setSmtpServer(String smtpServer)

Sets FQDN or IP of SMTP-server to be used to send message - to be called by SmtpSampler-object

Parameters:
  `smtpServer` - FQDN or IP of SMTP-server

#### getSender

    public String getSender()

Returns sender-address for current message - standard getter

Returns:
  sender-address

#### setSender

    public void setSender(String sender)

Sets the sender-address for the current message - to be called by SmtpSampler-object

Parameters:
  `sender` - Sender-address for current message

#### getSubject

    public String getSubject()

Returns subject for current message - standard getter

Returns:
  Subject of current message

#### setSubject

    public void setSubject(String subject)

Sets subject for current message - called by SmtpSampler-object

Parameters:
  `subject` - Subject for message of current message - may be null

#### getUsername

    public String getUsername()

Returns username to authenticate at the mailserver - standard getter

Returns:
  Username for mailserver

#### setUsername

    public void setUsername(String username)

Sets username to authenticate at the mailserver - to be called by SmtpSampler-object

Parameters:
  `username` - Username for mailserver

#### getPassword

    public String getPassword()

Returns password to authenticate at the mailserver - standard getter

Returns:
  Password for mailserver

#### setPassword

    public void setPassword(String password)

Sets password to authenticate at the mailserver - to be called by SmtpSampler-object

Parameters:
  `password` - Password for mailserver

#### setReceiverTo

    public void setReceiverTo(List<javax.mail.internet.InternetAddress> receiverTo)

Sets receivers of current message ("to") - to be called by SmtpSampler-object

Parameters:
  `receiverTo` - List of receivers

#### getReceiverCC

    public List<javax.mail.internet.InternetAddress> getReceiverCC()

Returns receivers of current message as `InternetAddress` ("cc") - standard getter

Returns:
  List of receivers

#### setReceiverCC

    public void setReceiverCC(List<javax.mail.internet.InternetAddress> receiverCC)

Sets receivers of current message ("cc") - to be called by SmtpSampler-object

Parameters:
  `receiverCC` - List of receivers

#### getReceiverBCC

    public List<javax.mail.internet.InternetAddress> getReceiverBCC()

Returns receivers of current message as `InternetAddress` ("bcc") - standard getter

Returns:
  List of receivers

#### setReceiverBCC

    public void setReceiverBCC(List<javax.mail.internet.InternetAddress> receiverBCC)

Sets receivers of current message ("bcc") - to be called by SmtpSampler-object

Parameters:
  `receiverBCC` - List of receivers

#### isUseAuthentication

    public boolean isUseAuthentication()

Returns if authentication is used to access the mailserver - standard getter

Returns:
  True if authentication is used to access mailserver

#### setUseAuthentication

    public void setUseAuthentication(boolean useAuthentication)

Sets if authentication should be used to access the mailserver - to be called by SmtpSampler-object

Parameters:
  `useAuthentication` - Should authentication be used to access mailserver?

#### getUseSSL

    public boolean getUseSSL()

Returns if SSL is used to send message - standard getter

Returns:
  True if SSL is used to transmit message

#### setUseSSL

    public void setUseSSL(boolean useSSL)

Sets SSL to secure the delivery channel for the message - to be called by SmtpSampler-object

Parameters:
  `useSSL` - Should StartTLS be used to secure SMTP-connection?

#### getUseStartTLS

    public boolean getUseStartTLS()

Returns if StartTLS is used to transmit message - standard getter

Returns:
  True if StartTLS is used to transmit message

#### setUseStartTLS

    public void setUseStartTLS(boolean useStartTLS)

Sets StartTLS to secure the delivery channel for the message - to be called by SmtpSampler-object

Parameters:
  `useStartTLS` - Should StartTLS be used to secure SMTP-connection?

#### getSmtpPort

    public String getSmtpPort()

Returns port to be used for SMTP-connection (standard 25 or 465) - standard getter

Returns:
  Port to be used for SMTP-connection

#### setSmtpPort

    public void setSmtpPort(String smtpPort)

Sets port to be used for SMTP-connection (standard 25 or 465) - to be called by SmtpSampler-object

Parameters:
  `smtpPort` - Port to be used for SMTP-connection

#### isTrustAllCerts

    public boolean isTrustAllCerts()

Returns if sampler should trust all certificates - standard getter

Returns:
  True if all Certificates are trusted

#### setTrustAllCerts

    public void setTrustAllCerts(boolean trustAllCerts)

Determines if SMTP-sampler should trust all certificates, no matter what CA - to be called by SmtpSampler-object

Parameters:
  `trustAllCerts` - Should all certificates be trusted?

#### setEnforceStartTLS

    public void setEnforceStartTLS(boolean enforceStartTLS)

Instructs object to enforce StartTLS and not to fallback to plain SMTP-connection - to be called by SmtpSampler-object

Parameters:
  `enforceStartTLS` - Should StartTLS be enforced?

#### isEnforceStartTLS

    public boolean isEnforceStartTLS()

Returns if StartTLS is enforced to secure the connection, i.e. no fallback is used (plain SMTP) - standard getter

Returns:
  True if StartTLS is enforced

#### getHeaders

    public CollectionProperty getHeaders()

Returns headers for current message - standard getter

Returns:
  CollectionProperty of headers for current message

#### setHeaderFields

    public void setHeaderFields(CollectionProperty headerFields)

Sets headers for current message

Parameters:
  `headerFields` - CollectionProperty of headers for current message

#### addHeader

    public void addHeader(String headerName,
                          String headerValue)

Adds a header-part to current HashMap of headers - to be called by SmtpSampler-object

Parameters:
  `headerName` - Key for current header
  `headerValue` - Value for current header

#### clearHeaders

    public void clearHeaders()

Deletes all current headers in HashMap

#### getAttachments

    public List<File> getAttachments()

Returns all attachment for current message - standard getter

Returns:
  List of attachments for current message

#### setAttachments

    public void setAttachments(List<File> attachments)

Adds attachments to current message

Parameters:
  `attachments` - List of files to be added as attachments to current message

#### addAttachment

    public void addAttachment(File attachment)

Adds an attachment to current message - to be called by SmtpSampler-object

Parameters:
  `attachment` - File-object to be added as attachment to current message

#### clearAttachments

    public void clearAttachments()

Clear all attachments for current message

#### isSynchronousMode

    public boolean isSynchronousMode()

Returns if synchronous-mode is used for current message (i.e. time for delivery, ... is measured) - standard getter

Returns:
  True if synchronous-mode is used

#### setSynchronousMode

    public void setSynchronousMode(boolean synchronousMode)

Sets the use of synchronous-mode (i.e. time for delivery, ... is measured) - to be called by SmtpSampler-object

Parameters:
  `synchronousMode` - Should synchronous-mode be used?

#### setTimeOut

    public void setTimeOut(String timeOut)

Parameters:
  `timeOut` - the timeOut to set

#### getTimeout

    public String getTimeout()

Returns timeout for the SMTP-connection - returns the default timeout if no value has been supplied.

Returns:
  Timeout to be set for SMTP-connection

#### setConnectionTimeOut

    public void setConnectionTimeOut(String connectionTimeOut)

Parameters:
  `connectionTimeOut` - the connectionTimeOut to set

#### getConnectionTimeout

    public String getConnectionTimeout()

Returns connection timeout for the SMTP-connection - returns the default connection timeout if no value has been supplied.

Returns:
  Connection timeout to be set for SMTP-connection

#### setUseLocalTrustStore

    public void setUseLocalTrustStore(boolean useLocalTrustStore)

Assigns the object to use a local truststore for SSL / StartTLS - to be called by SmtpSampler-object

Parameters:
  `useLocalTrustStore` - Should a local truststore be used?

#### setTrustStoreToUse

    public void setTrustStoreToUse(String trustStoreToUse)

Sets the path to the local truststore to be used for SSL / StartTLS - to be called by SmtpSampler-object

Parameters:
  `trustStoreToUse` - Path to local truststore

#### setUseEmlMessage

    public void setUseEmlMessage(boolean sendEmlMessage)

#### setEmlMessage

    public void setEmlMessage(String emlMessage)

Sets eml-message to be sent

Parameters:
  `emlMessage` - path to eml-message

#### setMailBody

    public void setMailBody(String body)

Set the mail body.

Parameters:
  `body` - the body of the mail

#### setPlainBody

    public void setPlainBody(boolean plainBody)

Set whether to send a plain body (i.e. not multipart/mixed)

Parameters:
  `plainBody` - `true` if sending a plain body (i.e. not multipart/mixed)

#### setEnableDebug

    public void setEnableDebug(boolean selected)

#### setReplyTo

    public void setReplyTo(List<javax.mail.internet.InternetAddress> replyTo)

#### setTlsProtocolsToUse

    public void setTlsProtocolsToUse(String tlsProtocols)

Sets the list of protocols to be used on TLS handshake

Parameters:
  `tlsProtocols` - Space separated list

#### getTlsProtocolsToUse

    public String getTlsProtocolsToUse()