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
    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
    Clear all attachments for current message
    void
    Deletes all current headers in HashMap
    void
    Processes prepareMessage() and execute()
    void
    execute(javax.mail.Message message)
    Sends message to mailserver, waiting for delivery if using synchronous mode.
    Returns all attachment for current message - standard getter
    Returns connection timeout for the SMTP-connection - returns the default connection timeout if no value has been supplied.
    Returns headers for current message - standard getter
    Returns password to authenticate at the mailserver - standard getter
    List<javax.mail.internet.InternetAddress>
    Returns receivers of current message as InternetAddress ("bcc") - standard getter
    List<javax.mail.internet.InternetAddress>
    Returns receivers of current message as InternetAddress ("cc") - standard getter
    Returns sender-address for current message - standard getter
    Returns port to be used for SMTP-connection (standard 25 or 465) - standard getter
    Returns FQDN or IP of SMTP-server to be used to send message - standard getter
    Returns subject for current message - standard getter
    Returns timeout for the SMTP-connection - returns the default timeout if no value has been supplied.
     
    Returns username to authenticate at the mailserver - standard getter
    boolean
    Returns if SSL is used to send message - standard getter
    boolean
    Returns if StartTLS is used to transmit message - standard getter
    boolean
    Returns if StartTLS is enforced to secure the connection, i.e.
    boolean
    Returns if synchronous-mode is used for current message (i.e.
    boolean
    Returns if sampler should trust all certificates - standard getter
    boolean
    Returns if authentication is used to access the mailserver - standard getter
    javax.mail.Message
    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
    Sets headers for current message
    void
    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
    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()