Difference between revisions of "Sending Emails"

From Lingoport Wiki
Jump to: navigation, search
(Connection is not successfull)
(Must issue a STARTTLS command first)
Line 143: Line 143:
   
 
===== Must issue a STARTTLS command first =====
 
===== Must issue a STARTTLS command first =====
An error such as ''Must issue a STARTTLS command first'' indicates that STARTTLS must be enabled either through:
+
An error such as ''Must issue a STARTTLS command first'' indicates that STARTTLS must be enabled. This error occurs when the protocol is SMTP. You can attempt to fix this error by:
 
* setting the authorization to SMTPS
 
* setting the authorization to SMTPS
 
* explicitly setting STARTTLS through the java option [[Sending_Emails#Enable.2FDisable_STARTTLS|mail.smtp.starttls.enable]] and adding the password to the command line (<code>-ep</code>)
 
* explicitly setting STARTTLS through the java option [[Sending_Emails#Enable.2FDisable_STARTTLS|mail.smtp.starttls.enable]] and adding the password to the command line (<code>-ep</code>)

Revision as of 16:06, 11 September 2017

config_email_global.xml

File config_email_global.xml is the configuration file for setting up the sender's email credentials for all emails that are sent by the LRM process. It is located in the global <HOME>/Lingoport_Data/L10nStreamlining/config folder.

The config_email_global.xml file is used by a project's Notifications Jenkins job in order to send out status emails. This Jenkins job is, by default, set to run once a week.

There are 3 types of information contained in the config_email_global.xml file.

  • email configuration
  • interval between the sending of status emails
  • flag indicating whether to send out the 'No Files to Prep' email

Email Credentials Configuration

The email configuration consists of the following xml elements:

  • smtp-host - server that will send the email
  • smtp-auth - authentication mechanism, if applicable
    • mail.smtp.auth - smtp protocol with smtp authentication
    • mail.smtps.auth - smtps protocol with smtps authentication
    • none' - smtp protocol with no authentication
  • email-sender - valid email address
  • sender-password - not required

Send email command may be used to test the configuration values.

Example No Authorization Email Configuration

Test your email configuration using the -se command for no authorization.

   <smtp-host>smtp.gmail.com/<smtp-host>
   <smtp-auth>none</smtp-auth>
   <email-sender>joe@mycompany.com</email-sender>  
   <sender-password encrypted="false">mypassword</sender-password>

Example SMTP Authorization Email Configuration

Test your email configuration using the -se command for SMTP authorization.

   <smtp-host>smtp.gmail.com/<smtp-host>
   <smtp-auth>mail.smtp.auth</smtp-auth>
   <email-sender>joe@mycompany.com</email-sender>  
   <sender-password encrypted="false"></sender-password>

Example SMTPS Authorization Email Configuration

Test your email configuration using the -se command for SMTPS authorization.

   <smtp-host>smtp.gmail.com/<smtp-host>
   <smtp-auth>mail.smtps.auth</smtp-auth>
   <email-sender>joe@mycompany.com</email-sender>  
   <sender-password encrypted="false">mypassword</sender-password>

Additional Email Configuration

In addition, there are configuration settings for when to send out notification emails and whether or not to send out the 'No Files to Prep' email.

  • dashboard-url - Dashboard URL used as the link destination for the email Log In button
  • notify-changes-email-interval - By default, the Notification email may be sent every day. Since the project's Jenkins Notification job is only run once a week, this email will only be set out once a week.
  • late-kits-email-interval - By default, the Late Prep Kits email may be sent every day depending on the number of days late. Since the project's Jenkins Notification job is only run once a week, this email will be sent out once a week.
  • number-days-late - By default, a prep kit is deemed late if it is 7 days late.
  • send-no-files-to-prep-email - By default, the No Files to Prep email will be sent out when there is a request to prep a kit but there are no files to prep. If a Jenkins job is created that automatically attempts to prep a kit, then this value should be set to 0 so that the email is not sent. Otherwise, the email recipient's inbox may be inundated with 'No Files to Prep' emails.

Java Options for sending emails

It may be necessary to explicitly set the email port and/or STARTTLS flag rather than rely on the default mail server values. In addition, the email session debug mode can be enabled.

There are 3 email settings that may be set through java options:

  • Email Server Port
  • SMTP STARTTLS enabled
  • Email Session Debug mode enabled

Email Protocol Port Number

The expected java option for explicitly setting the protocol port number is:

  • mail.smtp.port

Linux example if setting java options within a shell session.

export _JAVA_OPTIONS='-Dmail.smtp.port=25'

Enable/Disable STARTTLS

The expected java option for explicitly enabling/disabling STARTTLS is:

  • mail.smtp.starttls.enable

Linux example if setting java options within a shell session.

export _JAVA_OPTIONS='-Dmail.smtp.starttls.enable=true'

STARTTLS is automatically enabled for the SMTPS protocol.

Enable Email Session Debug mode

The expected java option for explicitly enabling/disabling the email session debug mode is:

  • mail.debug.mode

Linux example if setting java options within a shell session.

export _JAVA_OPTIONS='-Dmail.debug.mode=true'

Send Email Command

The send email command is accessed through the lpcommon.jar file and is located in the lib folder (i.e. ../lrm-server-x.x/lib). This command is used to test the configured mail server. Before running this command, you may want to enable the email session debug mode.

In order to run the send email -sse or --send-smtp-email command, you must specify an existing location for the error log.

In addition to the log file, there are 5 other required fields.

  • SMTP Host denoted by option -sh or --smtp-host
  • Senders email address denoted by option -es or --email-sender
  • Email Subject denoted by option -subj or --subject
  • Email Message denoted by option -msg or --message
  • Email Recipients denoted by option -r or --recipients

Sending Email with SMTP protocol and no authorization

To test sending an email using the SMTP protocol with no authorization run the following command:

java -jar lpcommon.jar -sse -lf /var/lib/jenkins/test/error.log -sh smtp.gmail.com -es myemail@mycompany.com -subj test -msg "This is a test" -r anotheremail@email.com

In looking at the console log you should see the following:

  • Email protocol is `smtp` (which is the default)
  • Authorization `mail.smtp.auth` is set to `false`
  • Connection successful


An error such as Must issue a STARTTLS command first indicates that STARTTLS must be enabled either through:

If the debug log indicates that the port is incorrect then you may need to explicitly set mail.smtp.port through its java option.

Sending Email with SMTP authorization

To test sending an email using the SMTP protocol with SMTP authorization run the following command:

java -jar lpcommon.jar -sse -lf /var/lib/jenkins/test/error.log -sh smtp.gmail.com -sa mail.smtp.auth -es myemail@mycompany.com -subj test -msg "This is a test" -r anotheremail@email.com

In looking at the console log you should see the following:

  • Email protocol is `smtp`
  • Authorization `mail.smtp.auth` is set to `true`

If errors occurs then you'll need to change your email send options. For error examples see Send Email Error Messages.

Sending Email with SMTPS protocol

To test sending an email using the SMTP protocol with SMTP authorization run the following command:

java -jar lpcommon.jar -sse -lf /var/lib/jenkins/test/error.log -sh smtp.gmail.com -sa mail.smtps.auth -es myemail@mycompany.com -subj test -msg "This is a test" -r anotheremail@email.com -ep mypassword

In looking at the console log you should see the following:

  • Email protocol is `smtp` (which is the default)
  • Authorization `mail.smtp.auth` is set to `false`

If errors occurs then you'll need to change your email send options. For error examples see Send Email Error Messages.

Send Email Error Messages

If you're unable to send an email successfully then you may want to enable the debug mode for the email session. This will provide additional information regarding the progress of the session. Set the debug mode through java options.

Connection is not successfull

Connection not successful indicates that either the host or port number is incorrect. Typically, the cause of this error is mistyping the server host. A less typical reason is that the default port number is incorrect. If you're unable to find where the port number is being set, then you can explictly set it via java options.

Must issue a STARTTLS command first

An error such as Must issue a STARTTLS command first indicates that STARTTLS must be enabled. This error occurs when the protocol is SMTP. You can attempt to fix this error by:

  • setting the authorization to SMTPS
  • explicitly setting STARTTLS through the java option mail.smtp.starttls.enable and adding the password to the command line (-ep)

Encrypted Password

The <sender-password> can be configured with the encrypted attribute set to true, as in

         ...
         <email-sender>mailuser@company.com</email-sender>
         <sender-password encrypted="true">UUIasd455</sender-password>
         ...

To encrypt the password, use the encrypt command line on lrm-common.jar file. For instance:

> java -jar <LRM_INSTALLATION_PATH>/lib/lpcommon.jar --encrypt

which will prompt you for the text (here the password) to encrypt and will provide the result on the console.