Sahi - Sending Emails
abstract
Sahi can send emails at the end of a suite, or from anywhere inside a script.
To email playback reports at the end of a suite run, refer to Playback on Desktop.
This section explains how to send out emails from within a script.
There is a small program to send emails which is bundled with Sahi. It is just a thin wrapper over JavaMail. To call it, mail.jar, activation.jar and ant-sahi.jar need to be added to Sahi's classpath.To email playback reports at the end of a suite run, refer to Playback on Desktop.
This section explains how to send out emails from within a script.
- Copy
mail.jar
andactivation.jar
fromsahi/extlib/mail/
tosahi/userdata/extlib/
folder (createextlib
folder if it does not exists).
NOTE: If you are using Java 1.6 or greater, you do not need to copyactivation.jar
file. - Copy
ant-sahi.jar
fromsahi/lib/
tosahi/userdata/extlib/
folder. Restarting Sahi will automatically add these jars to Sahi's classpath. - Call the below function for sending emails, and make changes accordingly.
Call following function to usefunction sendEmail($emailSubject, $emailBody) { var $host = "smtp.gmail.com"; var $port = 465; var $username = "from@gmail.com"; var $password = "password"; var $isSSL = true; // set to true if you use SSL var $mailer = new Packages.net.sf.sahi.ant.Mailer($host, $port, $username, $password, $isSSL); $mailer.setFrom("from@gmail.com"); $mailer.setTo("to@example.com"); $mailer.setSubject($emailSubject); $mailer.setBody($emailBody); $mailer.addAttachment("Attachment.zip", "d:/Attachment.zip"); $mailer.send(); }
sahi/userdata/config/email.properties
file for sending email.
function sendEmailWithProps($emailSubject, $emailBody) { var $props = loadProperties(_userDataPath("config/email.properties"), false); var $mailer = new Packages.net.sf.sahi.ant.Mailer($props); $mailer.addTo("additional@gmail.com"); //This will append to the already present receipent address from properties file $mailer.setBody($emailBody); $mailer.setSubject($emailSubject); $mailer.addAttachment("Attachment.zip", "d:/Attachment.zip"); $mailer.send(); } function loadProperties($path, $isXML) { var $props = new java.util.Properties(); try { var $inStream = new java.io.FileInputStream($path); if ($isXML) { $props.loadFromXML($inStream); } else { $props.load($inStream); } $inStream.close(); } catch (e) { // do nothing } return $props; }
info NOTE: Please refer to the APIs listed below for more details.
Refer to Working with Java object directly in Sahi Script to see an example of reading property files via Java and Sahi Script
Refer to Email.properties file explained for detailed explanation about email.properties.
- Call it directly as
sendEmail("Mail from Sahi", "All izz well"); or sendEmailWithProps("Mail from Sahi", "All izz well");
- To trigger an email at the end of script, add a onScriptEnd function to your script:
function onScriptEnd(){ var $status = _scriptStatus(); // "FAILURE" or "SUCCESS" var $scriptName = _scriptName(); var $scriptPath = _scriptPath(); // Script name with full file path sendEmail($status + ": " + $scriptName, "Script: " + $scriptPath + "\nStatus: " + $status); }
The Mailer class mentioned above exposes the following public methods that can be used while sending email:
Method | Documentation |
setTo($toList) | Sets recipient address to $toList. eg. $mailer.setTo("awesome@gmail.com"); or $mailer.setTo("pro@gmail.com, else@gmail.com"); |
addTo($toList) | Adds $toList to existing recipient To address list eg. $mailer.addTo("awesome@gmail.com"); or $mailer.addTo("pro@gmail.com, else@gmail.com"); |
setCC($ccList) | Sets CC to $ccList. eg. $mailer.setCC("awesome@gmail.com"); or $mailer.setCC("pro@gmail.com, else@gmail.com"); |
addCC($ccList) | Adds $ccList to existing list for CC eg. $mailer.addCC("awesome@gmail.com"); or $mailer.addCC("pro@gmail.com, else@gmail.com"); |
setBCC($bccList) | Sets BCC to $bccList. eg. $mailer.setBCC("awesome@gmail.com"); or $mailer.setBCC("pro@gmail.com, else@gmail.com"); |
addBCC($bccList) | Adds $bccList to existing list for BCC eg. $mailer.addBCC("awesome@gmail.com"); or $mailer.addBCC("pro@gmail.com, else@gmail.com"); |
setSubject($subject) | Sets the subject of email to $subject. |
addSubject($subject) | Sets the subject of email to $subject. This is now deprecated. Please use setSubject instead. |
setBody($body) | Sets the body of email to $body |
addBody($body) | Sets the body of email to $body. This is now deprecated. Please use setBody instead. |
addAttachment($name, $path); | Adds attachment with name as $name and path as $path. Can be called multiple times for multiple attachments. |
setMailProperty($property, $value); | Sets additional email properties. eg. $mailer.setMailProperty("mail.smtp.starttls.enable", "true"); |
Refer to Sahi call back functions for more details on onScriptEnd