Package 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
Description
`SendMailCommand()`
Standard-Constructor

## Method Summary

Modifier and Type
Method
Description
`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 Details

### SendMailCommand

public SendMailCommand()
Standard-Constructor

## Method Details

### 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()