diff --git a/Tasks/emailReportTask/config/ConfigurationProvider.ts b/Tasks/emailReportTask/config/ConfigurationProvider.ts index c151d80f..fff5f132 100644 --- a/Tasks/emailReportTask/config/ConfigurationProvider.ts +++ b/Tasks/emailReportTask/config/ConfigurationProvider.ts @@ -89,6 +89,9 @@ export class ConfigurationProvider implements IConfigurationProvider { throw new InputError("Email subject not set"); } + // From Address + const fromAddress = tl.getInput(TaskConstants.FROMADDRESS_INPUTKEY, true); + // Optional inputs const toAddresses = tl.getInput(TaskConstants.TOADDRESS_INPUTKEY, false); const ccAddresses = tl.getInput(TaskConstants.CCADDRESS_INPUTKEY, false); @@ -101,7 +104,7 @@ export class ConfigurationProvider implements IConfigurationProvider { const defaultDomain = tl.getInput(TaskConstants.DEFAULTDOMAIN_INPUTKEY, true); - this.mailConfiguration = new MailConfiguration(mailSubject, toRecipientsConfiguration, ccRecipientsConfiguration, smtpConfig, defaultDomain); + this.mailConfiguration = new MailConfiguration(fromAddress, mailSubject, toRecipientsConfiguration, ccRecipientsConfiguration, smtpConfig, defaultDomain); } private initReportDataConfiguration(): void { @@ -166,4 +169,4 @@ export class ConfigurationProvider implements IConfigurationProvider { default: return GroupTestResultsBy.Run; } } -} \ No newline at end of file +} diff --git a/Tasks/emailReportTask/config/TaskConstants.ts b/Tasks/emailReportTask/config/TaskConstants.ts index f8182ecb..b71909a5 100644 --- a/Tasks/emailReportTask/config/TaskConstants.ts +++ b/Tasks/emailReportTask/config/TaskConstants.ts @@ -7,6 +7,7 @@ export class TaskConstants { public static readonly MAXTESTFAILURESTOSHOW_INPUTKEY = "maxTestFailuresToShow"; public static readonly GROUPTESTSUMMARYBY_INPUTKEY = "groupTestSummaryByStr"; public static readonly INCLUDERESULTS_INPUTKEY = "includeResultsStr"; + public static readonly FROMADDRESS_INPUTKEY = "fromAddress"; public static readonly TOADDRESS_INPUTKEY = "toAddress"; public static readonly CCADDRESS_INPUTKEY = "ccAddress"; public static readonly INCLUDEINTO_INPUTKEY = "includeInToSectionStr"; diff --git a/Tasks/emailReportTask/config/mail/MailConfiguration.ts b/Tasks/emailReportTask/config/mail/MailConfiguration.ts index d47a9b10..8cfa39f8 100644 --- a/Tasks/emailReportTask/config/mail/MailConfiguration.ts +++ b/Tasks/emailReportTask/config/mail/MailConfiguration.ts @@ -3,13 +3,15 @@ import { SmtpConfiguration } from "./SmtpConfiguration"; export class MailConfiguration { + private fromAddress: string; private mailSubject: string; private toRecipientsConfig: RecipientsConfiguration; private ccRecipientsConfig: RecipientsConfiguration; private smtpConfig: SmtpConfiguration; private defaultDomain: string; - constructor($mailSubject: string, $toRecipientsConfig: RecipientsConfiguration, $ccRecipientsConfig: RecipientsConfiguration, $smtpConfig: SmtpConfiguration, $defaultDomain: string) { + constructor($fromAddress: string, $mailSubject: string, $toRecipientsConfig: RecipientsConfiguration, $ccRecipientsConfig: RecipientsConfiguration, $smtpConfig: SmtpConfiguration, $defaultDomain: string) { + this.fromAddress = $fromAddress; this.mailSubject = $mailSubject; this.toRecipientsConfig = $toRecipientsConfig; this.ccRecipientsConfig = $ccRecipientsConfig; @@ -25,6 +27,14 @@ export class MailConfiguration { return this.defaultDomain; } + /** + * Getter $fromAddress + * @return {string} + */ + public get $fromAddress(): string { + return this.fromAddress; + } + /** * Getter $mailSubject * @return {string} diff --git a/Tasks/emailReportTask/model/viewmodel/MailAddressViewModel.ts b/Tasks/emailReportTask/model/viewmodel/MailAddressViewModel.ts index d3e64757..af807465 100644 --- a/Tasks/emailReportTask/model/viewmodel/MailAddressViewModel.ts +++ b/Tasks/emailReportTask/model/viewmodel/MailAddressViewModel.ts @@ -15,8 +15,8 @@ export class MailAddressViewModel { private defaultDomain: string; - constructor(report: Report, mailConfig: MailConfiguration) { - this.from = mailConfig.$smtpConfig.$userName; + constructor(report: Report, mailConfig: MailConfiguration) { + this.from = StringUtils.isNullOrWhiteSpace(mailConfig.$fromAddress) ? mailConfig.$smtpConfig.$userName : mailConfig.$fromAddress; this.defaultDomain = mailConfig.$defaultDomain; console.log("computing email addresses for to section"); diff --git a/Tasks/emailReportTask/task.dev.json b/Tasks/emailReportTask/task.dev.json index 7f6fc8b9..4488bb31 100644 --- a/Tasks/emailReportTask/task.dev.json +++ b/Tasks/emailReportTask/task.dev.json @@ -75,6 +75,15 @@ "DisableManageLink": "True" }, "groupName": "emailConfiguration" + }, + { + "name": "fromAddress", + "type": "string", + "label": "From", + "defaultValue": "", + "required": false, + "helpMarkDown": "Sender email address.", + "groupName": "emailConfiguration" }, { "name": "toAddress", @@ -231,4 +240,4 @@ "target": "Index.js" } } -} \ No newline at end of file +} diff --git a/Tasks/emailReportTask/task.prod.json b/Tasks/emailReportTask/task.prod.json index d2338450..76426087 100644 --- a/Tasks/emailReportTask/task.prod.json +++ b/Tasks/emailReportTask/task.prod.json @@ -76,6 +76,15 @@ }, "groupName": "emailConfiguration" }, + { + "name": "fromAddress", + "type": "string", + "label": "From", + "defaultValue": "", + "required": false, + "helpMarkDown": "Sender email address.", + "groupName": "emailConfiguration" + }, { "name": "toAddress", "type": "string", @@ -231,4 +240,4 @@ "target": "Index.js" } } -} \ No newline at end of file +} diff --git a/Tasks/emailReportTask/tests/__e_to_e_tests__/InvokeTest.ts b/Tasks/emailReportTask/tests/__e_to_e_tests__/InvokeTest.ts index 6a84199e..1fd16fb9 100644 --- a/Tasks/emailReportTask/tests/__e_to_e_tests__/InvokeTest.ts +++ b/Tasks/emailReportTask/tests/__e_to_e_tests__/InvokeTest.ts @@ -46,7 +46,7 @@ export class MockConfigProvider implements IConfigurationProvider { } getMailConfiguration(): MailConfiguration { - return new MailConfiguration("[{environmentStatus}] {passPercentage} tests passed", + return new MailConfiguration("from@email.com", "[{environmentStatus}] {passPercentage} tests passed", new RecipientsConfiguration("xyz@email.com", false, false, false, false), new RecipientsConfiguration("", false, false, false, false), new SmtpConfiguration(smtpUser, smtpPassword, "smtp.live.com", true), "test.com");