diff --git a/src/System Application/App/DotNet Aliases/src/dotnet.al b/src/System Application/App/DotNet Aliases/src/dotnet.al
index 3391696606..a0c3eb9119 100644
--- a/src/System Application/App/DotNet Aliases/src/dotnet.al
+++ b/src/System Application/App/DotNet Aliases/src/dotnet.al
@@ -261,16 +261,6 @@ dotnet
}
}
- assembly("Microsoft.Dynamics.Nav.AppHTMLSanitizer")
- {
- Culture = 'neutral';
- PublicKeyToken = '31bf3856ad364e35';
-
- type("Microsoft.Dynamics.Nav.AppHTMLSanitizer.AppHtmlSanitizer"; "AppHtmlSanitizer")
- {
- }
- }
-
assembly("Microsoft.Dynamics.Nav.AzureADGraphClient")
{
type("Microsoft.Dynamics.Nav.AzureADGraphClient.GroupInfoPage"; "GroupInfoPage")
diff --git a/src/System Application/App/Email/src/Account/EmailAccountImpl.Codeunit.al b/src/System Application/App/Email/src/Account/EmailAccountImpl.Codeunit.al
index b66b5a4022..63bc7aa1f9 100644
--- a/src/System Application/App/Email/src/Account/EmailAccountImpl.Codeunit.al
+++ b/src/System Application/App/Email/src/Account/EmailAccountImpl.Codeunit.al
@@ -29,16 +29,16 @@ codeunit 8889 "Email Account Impl."
var
EmailAccounts: Record "Email Account";
Connector: Enum "Email Connector";
- EmailConnector: Interface "Email Connector";
+ IEmailConnector: Interface "Email Connector";
begin
TempEmailAccount.Reset();
TempEmailAccount.DeleteAll();
foreach Connector in Connector.Ordinals do begin
- EmailConnector := Connector;
+ IEmailConnector := Connector;
EmailAccounts.DeleteAll();
- EmailConnector.GetAccounts(EmailAccounts);
+ IEmailConnector.GetAccounts(EmailAccounts);
if EmailAccounts.FindSet() then
repeat
diff --git a/src/System Application/App/Email/src/Account/EmailAccounts.Page.al b/src/System Application/App/Email/src/Account/EmailAccounts.Page.al
index 13160bc147..bfe33cf06a 100644
--- a/src/System Application/App/Email/src/Account/EmailAccounts.Page.al
+++ b/src/System Application/App/Email/src/Account/EmailAccounts.Page.al
@@ -387,8 +387,8 @@ page 8887 "Email Accounts"
IsSelected := not IsNullGuid(SelectedAccountId);
EmailAccount.GetAllAccounts(true, Rec); // Refresh the email accounts
- if V2V3Filter then
- FilterToConnectorv2v3Accounts(Rec);
+ if V2Filter then
+ FilterToConnectorv2Accounts(Rec);
EmailScenario.GetDefaultEmailAccount(DefaultEmailAccount); // Refresh the default email account
if IsSelected then begin
@@ -402,7 +402,7 @@ page 8887 "Email Accounts"
CurrPage.Update(false);
end;
- local procedure FilterToConnectorv2v3Accounts(var EmailAccounts: Record "Email Account")
+ local procedure FilterToConnectorv2Accounts(var EmailAccounts: Record "Email Account")
var
IConnector: Interface "Email Connector";
begin
@@ -411,13 +411,7 @@ page 8887 "Email Accounts"
repeat
IConnector := EmailAccounts.Connector;
-#if not CLEAN26
-#pragma warning disable AL0432
- if not (IConnector is "Email Connector v2") and not (IConnector is "Email Connector v3") then
-#pragma warning restore AL0432
-#else
- if not (IConnector is "Email Connector v3") then
-#endif
+ if not (IConnector is "Email Connector v2") then
EmailAccounts.Delete();
until EmailAccounts.Next() = 0;
end;
@@ -463,24 +457,12 @@ page 8887 "Email Accounts"
end;
///
- /// Filters the email accounts to only show accounts that are using the Email Connector v2 or v3.
+ /// Filters the email accounts to only show accounts that are using the Email Connector v2.
///
/// True to filter the email accounts, false to show all email accounts
-#if not CLEAN26
- [Obsolete('Replaced by FilterConnectorV3Accounts. In addition, this function now returns both v2 and v3 accounts.', '26.0')]
procedure FilterConnectorV2Accounts(Filter: Boolean)
begin
- V2V3Filter := Filter;
- end;
-#endif
-
- ///
- /// Filters the email accounts to only show accounts that are using the Email Connector v2 or v3.
- ///
- /// True to filter the email accounts, false to show all email accounts
- procedure FilterConnectorV3Accounts(Filter: Boolean)
- begin
- V2V3Filter := Filter;
+ V2Filter := Filter;
end;
var
@@ -495,6 +477,6 @@ page 8887 "Email Accounts"
ShowLogo: Boolean;
IsLookupMode: Boolean;
HasEmailAccount: Boolean;
- V2V3Filter: Boolean;
+ V2Filter: Boolean;
EmailConnectorHasBeenUninstalledMsg: Label 'The selected email extension has been uninstalled. To view information about the email account, you must reinstall the extension.';
}
\ No newline at end of file
diff --git a/src/System Application/App/Email/src/Connector/DefaultEmailConnectorv2.Codeunit.al b/src/System Application/App/Email/src/Connector/DefaultEmailConnectorv2.Codeunit.al
index 1a12853797..9be71709cb 100644
--- a/src/System Application/App/Email/src/Connector/DefaultEmailConnectorv2.Codeunit.al
+++ b/src/System Application/App/Email/src/Connector/DefaultEmailConnectorv2.Codeunit.al
@@ -8,15 +8,8 @@ namespace System.Email;
///
/// This is the default implementation of the Email Connector v2 interface which adds the reply, retrievial of emails and marking them as read functionalities.
///
-#if not CLEAN26
-#pragma warning disable AL0432
-codeunit 8998 "Default Email Connector v2" implements "Email Connector v2", "Email Connector v3"
-#pragma warning restore AL0432
-#else
-codeunit 8998 "Default Email Connector v2" implements "Email Connector v3"
-#endif
+codeunit 8998 "Default Email Connector v2" implements "Email Connector v2"
{
-
procedure Send(EmailMessage: Codeunit "Email Message"; AccountId: Guid)
begin
@@ -57,18 +50,10 @@ codeunit 8998 "Default Email Connector v2" implements "Email Connector v3"
end;
-#if not CLEAN26
- [Obsolete('Replaced by RetrieveEmails with an additional Filters parameter of type Record "Email Retrieval Filters".', '26.0')]
procedure RetrieveEmails(AccountId: Guid; var EmailInbox: Record "Email Inbox")
begin
end;
-#endif
-
- procedure RetrieveEmails(AccountId: Guid; var EmailInbox: Record "Email Inbox"; var Filters: Record "Email Retrieval Filters" temporary)
- begin
-
- end;
procedure MarkAsRead(AccountId: Guid; ExternalId: Text)
begin
diff --git a/src/System Application/App/Email/src/Connector/EmailConnector.Enum.al b/src/System Application/App/Email/src/Connector/EmailConnector.Enum.al
index e44699a614..e7b91df374 100644
--- a/src/System Application/App/Email/src/Connector/EmailConnector.Enum.al
+++ b/src/System Application/App/Email/src/Connector/EmailConnector.Enum.al
@@ -8,18 +8,9 @@ namespace System.Email;
///
/// Enum that holds all of the available email connectors.
///
-#if not CLEAN26
-#pragma warning disable AL0432
-enum 8889 "Email Connector" implements "Email Connector", "Email Connector v2", "Email Connector v3", "Default Email Rate Limit"
-#pragma warning restore AL0432
-#else
-enum 8889 "Email Connector" implements "Email Connector", "Email Connector v3", "Default Email Rate Limit"
-#endif
+enum 8889 "Email Connector" implements "Email Connector", "Email Connector v2", "Default Email Rate Limit"
{
Extensible = true;
DefaultImplementation = "Default Email Rate Limit" = "Default Email Rate Limit",
-#if not CLEAN26
- "Email Connector v2" = "Default Email Connector v2",
-#endif
- "Email Connector v3" = "Default Email Connector v2";
+ "Email Connector v2" = "Default Email Connector v2";
}
\ No newline at end of file
diff --git a/src/System Application/App/Email/src/Connector/EmailConnectorv2.Interface.al b/src/System Application/App/Email/src/Connector/EmailConnectorv2.Interface.al
index 73fa9a93bd..20f36643f5 100644
--- a/src/System Application/App/Email/src/Connector/EmailConnectorv2.Interface.al
+++ b/src/System Application/App/Email/src/Connector/EmailConnectorv2.Interface.al
@@ -1,4 +1,3 @@
-#if not CLEAN26
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
@@ -11,10 +10,6 @@ namespace System.Email;
///
interface "Email Connector v2" extends "Email Connector"
{
- ObsoleteReason = 'Replaced by "Email Connector v3" which adds filtering capability for retrieval of emails';
- ObsoleteState = Pending;
- ObsoleteTag = '26.0';
-
///
/// Reply to an e-mail using the provided account.
///
@@ -35,5 +30,4 @@ interface "Email Connector v2" extends "Email Connector"
/// The email account ID.
/// The external ID of the email.
procedure MarkAsRead(AccountId: Guid; ExternalId: Text);
-}
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/System Application/App/Email/src/Connector/EmailConnectorv3.Interface.al b/src/System Application/App/Email/src/Connector/EmailConnectorv3.Interface.al
deleted file mode 100644
index 3457e2edb0..0000000000
--- a/src/System Application/App/Email/src/Connector/EmailConnectorv3.Interface.al
+++ /dev/null
@@ -1,34 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-
-namespace System.Email;
-
-///
-/// An e-mail connector interface enhances the "Email Connector" with reading, replying to e-mails and marking emails as read.
-///
-interface "Email Connector v3" extends "Email Connector"
-{
- ///
- /// Reply to an e-mail using the provided account.
- ///
- /// The email message that is to be sent out.
- /// The email account ID which is used to send out the email.
- procedure Reply(var EmailMessage: Codeunit "Email Message"; AccountId: Guid);
-
- ///
- /// Read e-mails from the provided account.
- ///
- /// The email account ID which is used to send out the email.
- /// The email inbox record that will store the emails.
- /// Filters to be used when retrieving emails.
- procedure RetrieveEmails(AccountId: Guid; var EmailInbox: Record "Email Inbox"; var Filters: Record "Email Retrieval Filters" temporary);
-
- ///
- /// Mark an e-mail as read in the provided account.
- ///
- /// The email account ID.
- /// The external ID of the email.
- procedure MarkAsRead(AccountId: Guid; ExternalId: Text);
-}
\ No newline at end of file
diff --git a/src/System Application/App/Email/src/Email/Email.Codeunit.al b/src/System Application/App/Email/src/Email/Email.Codeunit.al
index 091d04cac0..6455872e7a 100644
--- a/src/System Application/App/Email/src/Email/Email.Codeunit.al
+++ b/src/System Application/App/Email/src/Email/Email.Codeunit.al
@@ -253,30 +253,17 @@ codeunit 8901 Email
#endregion
#region RetrieveEmails
-#if not CLEAN26
+
///
/// Retrieves emails from the email account.
///
/// The ID of the email account to use for sending the email.
/// The email connector to use for sending the email.
/// The return record of all new emails that were retrieved.
- [Obsolete('Replaced by RetrieveEmails with an additional Filters parameter of type Record "Email Retrieval Filters".', '26.0')]
procedure RetrieveEmails(EmailAccountId: Guid; EmailConnector: Enum "Email Connector"; var EmailInbox: Record "Email Inbox")
begin
EmailImpl.RetrieveEmails(EmailAccountId, EmailConnector, EmailInbox);
end;
-#endif
- ///
- /// Retrieves emails from the email account.
- ///
- /// The ID of the email account to use for sending the email.
- /// The email connector to use for sending the email.
- /// The return record of all new emails that were retrieved.
- /// Filters to be used when retrieving emails.
- procedure RetrieveEmails(EmailAccountId: Guid; EmailConnector: Enum "Email Connector"; var EmailInbox: Record "Email Inbox"; var Filters: Record "Email Retrieval Filters" temporary)
- begin
- EmailImpl.RetrieveEmails(EmailAccountId, EmailConnector, EmailInbox, Filters);
- end;
#endregion
diff --git a/src/System Application/App/Email/src/Email/EmailImpl.Codeunit.al b/src/System Application/App/Email/src/Email/EmailImpl.Codeunit.al
index d78048ceee..e08ce2c8a6 100644
--- a/src/System Application/App/Email/src/Email/EmailImpl.Codeunit.al
+++ b/src/System Application/App/Email/src/Email/EmailImpl.Codeunit.al
@@ -199,41 +199,17 @@ codeunit 8900 "Email Impl"
procedure RetrieveEmails(EmailAccountId: Guid; Connector: Enum "Email Connector"; var EmailInbox: Record "Email Inbox")
var
- Filters: Record "Email Retrieval Filters";
- begin
- Filters.Insert();
- RetrieveEmails(EmailAccountId, Connector, EmailInbox, Filters);
- end;
-
- procedure RetrieveEmails(EmailAccountId: Guid; Connector: Enum "Email Connector"; var EmailInbox: Record "Email Inbox"; var Filters: Record "Email Retrieval Filters" temporary)
- var
-#if not CLEAN26
-#pragma warning disable AL0432
- EmailConnectorv2: Interface "Email Connector v2";
-#pragma warning restore AL0432
-#endif
- EmailConnectorv3: Interface "Email Connector v3";
+ IEmailConnectorv2: Interface "Email Connector v2";
begin
CheckRequiredPermissions();
- if CheckAndGetEmailConnectorv3(Connector, EmailConnectorv3) then begin
- TelemetryAppsAndPublishers(TelemetryRetrieveEmailsUsedTxt);
- EmailConnectorv3.RetrieveEmails(EmailAccountId, EmailInbox, Filters);
- EmailInbox.MarkedOnly(true);
- exit;
- end;
-#if not CLEAN26
-#pragma warning disable AL0432
- if CheckAndGetEmailConnectorv2(Connector, EmailConnectorv2) then begin
-#pragma warning restore AL0432
+ if CheckAndGetEmailConnectorv2(Connector, IEmailConnectorv2) then begin
TelemetryAppsAndPublishers(TelemetryRetrieveEmailsUsedTxt);
- EmailConnectorv2.RetrieveEmails(EmailAccountId, EmailInbox);
- EmailInbox.MarkedOnly(true);
- exit;
- end;
-#endif
+ IEmailConnectorv2.RetrieveEmails(EmailAccountId, EmailInbox);
+ end else
+ Error(EmailConnectorDoesNotSupportRetrievingEmailsErr);
- Error(EmailConnectorDoesNotSupportRetrievingEmailsErr);
+ EmailInbox.MarkedOnly(true);
end;
local procedure TelemetryAppsAndPublishers(Message: Text)
@@ -260,59 +236,30 @@ codeunit 8900 "Email Impl"
procedure MarkAsRead(EmailAccountId: Guid; Connector: Enum "Email Connector"; ExternalId: Text)
var
-#if not CLEAN26
-#pragma warning disable AL0432
- EmailConnectorv2: Interface "Email Connector v2";
-#pragma warning restore AL0432
-#endif
- EmailConnectorv3: Interface "Email Connector v3";
+ IEmailConnectorv2: Interface "Email Connector v2";
begin
CheckRequiredPermissions();
if ExternalId = '' then
Error(ExternalIdCannotBeEmptyErr);
- if CheckAndGetEmailConnectorv3(Connector, EmailConnectorv3) then begin
- EmailConnectorv3.MarkAsRead(EmailAccountId, ExternalId);
- exit;
- end;
-#if not CLEAN26
-#pragma warning disable AL0432
- if CheckAndGetEmailConnectorv2(Connector, EmailConnectorv2) then begin
-#pragma warning restore AL0432
- EmailConnectorv2.MarkAsRead(EmailAccountId, ExternalId);
- exit;
- end;
-#endif
-
- Error(EmailConnectorDoesNotSupportMarkAsReadErr);
+ if CheckAndGetEmailConnectorv2(Connector, IEmailConnectorv2) then
+ IEmailConnectorv2.MarkAsRead(EmailAccountId, ExternalId)
+ else
+ Error(EmailConnectorDoesNotSupportMarkAsReadErr);
end;
procedure CheckReplySupported(Connector: Enum "Email Connector"): Boolean
var
-#if not CLEAN26
-#pragma warning disable AL0432
- EmailConnectorv2: Interface "Email Connector v2";
-#pragma warning restore AL0432
-#endif
- EmailConnectorv3: Interface "Email Connector v3";
+ IEmailConnectorv2: Interface "Email Connector v2";
begin
- if CheckAndGetEmailConnectorv3(Connector, EmailConnectorv3) then
- exit(true);
-#if not CLEAN26
-#pragma warning disable AL0432
- if CheckAndGetEmailConnectorv2(Connector, EmailConnectorv2) then
- exit(true);
-#pragma warning restore AL0432
-#endif
+ if not CheckAndGetEmailConnectorv2(Connector, IEmailConnectorv2) then
+ Error(EmailconnectorDoesNotSupportReplyingErr);
- Error(EmailconnectorDoesNotSupportReplyingErr);
+ exit(true);
end;
-#if not CLEAN26
-#pragma warning disable AL0432
- [Obsolete('Replaced by CheckAndGetEmailConnectorv3.', '26.0')]
+
procedure CheckAndGetEmailConnectorv2(Connector: Interface "Email Connector"; var Connectorv2: Interface "Email Connector v2"): Boolean
-#pragma warning restore AL0432
begin
if Connector is "Email Connector v2" then begin
Connectorv2 := Connector as "Email Connector v2";
@@ -320,16 +267,6 @@ codeunit 8900 "Email Impl"
end else
exit(false);
end;
-#endif
-
- procedure CheckAndGetEmailConnectorv3(Connector: Interface "Email Connector"; var Connectorv3: Interface "Email Connector v3"): Boolean
- begin
- if Connector is "Email Connector v3" then begin
- Connectorv3 := Connector as "Email Connector v3";
- exit(true);
- end else
- exit(false);
- end;
procedure OpenInEditor(EmailMessage: Codeunit "Email Message"; EmailScenario: Enum "Email Scenario"; IsModal: Boolean): Enum "Email Action"
var
diff --git a/src/System Application/App/Email/src/Email/Inbox/EmailRetrievalFilters.Table.al b/src/System Application/App/Email/src/Email/Inbox/EmailRetrievalFilters.Table.al
deleted file mode 100644
index a660a47b6f..0000000000
--- a/src/System Application/App/Email/src/Email/Inbox/EmailRetrievalFilters.Table.al
+++ /dev/null
@@ -1,59 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-
-namespace System.Email;
-
-/// Holds information about the filters for retrieving emails.
-table 8885 "Email Retrieval Filters"
-{
- Access = Public;
- TableType = Temporary;
- DataClassification = SystemMetadata;
- InherentEntitlements = RIMDX;
- InherentPermissions = RIMDX;
-
- fields
- {
- field(1; Id; Integer)
- {
- AutoIncrement = true;
- }
-
- field(2; "Load Attachments"; Boolean)
- {
- }
-
- field(3; "Unread Emails"; Boolean)
- {
- }
-
- field(4; "Draft Emails"; Boolean)
- {
- }
-
- field(5; "Max No. of Emails"; Integer)
- {
- InitValue = 20;
- }
-
- field(6; "Body Type"; Option)
- {
- OptionMembers = "HTML","Text";
- InitValue = "HTML";
- }
-
- field(7; "Earliest Email"; DateTime)
- {
- }
- }
-
- keys
- {
- key(PK; Id)
- {
- Clustered = true;
- }
- }
-}
\ No newline at end of file
diff --git a/src/System Application/App/Email/src/Email/SendEmail.Codeunit.al b/src/System Application/App/Email/src/Email/SendEmail.Codeunit.al
index c236de3940..08fd191271 100644
--- a/src/System Application/App/Email/src/Email/SendEmail.Codeunit.al
+++ b/src/System Application/App/Email/src/Email/SendEmail.Codeunit.al
@@ -16,33 +16,22 @@ codeunit 8890 "Send Email"
var
EmailMessage: Codeunit "Email Message";
EmailImpl: Codeunit "Email Impl";
- EmailConnector: Interface "Email Connector";
-#if not CLEAN26
-#pragma warning disable AL0432
- EmailConnectorv2: Interface "Email Connector v2";
-#pragma warning restore AL0432
-#endif
- EmailConnectorv3: Interface "Email Connector v3";
+ IEmailConnector: Interface "Email Connector";
+ IEmailConnectorv2: Interface "Email Connector v2";
begin
EmailMessage.Get(Rec.Id);
if EmailMessage.GetExternalId() <> '' then begin
- EmailConnector := GlobalEmailConnector;
-#if not CLEAN26
-#pragma warning disable AL0432
- if EmailImpl.CheckAndGetEmailConnectorv2(EmailConnector, EmailConnectorv2) then
-#pragma warning restore AL0432
- EmailConnectorv2.Reply(EmailMessage, AccountId);
-#endif
- if EmailImpl.CheckAndGetEmailConnectorv3(EmailConnector, EmailConnectorv3) then
- EmailConnectorv3.Reply(EmailMessage, AccountId);
+ IEmailConnector := EmailConnector;
+ if EmailImpl.CheckAndGetEmailConnectorv2(IEmailConnector, IEmailConnectorv2) then
+ IEmailConnectorv2.Reply(EmailMessage, AccountId);
end else
- GlobalEmailConnector.Send(EmailMessage, AccountId);
+ EmailConnector.Send(EmailMessage, AccountId);
end;
procedure SetConnector(NewEmailConnector: Interface "Email Connector")
begin
- GlobalEmailConnector := NewEmailConnector;
+ EmailConnector := NewEmailConnector;
end;
procedure SetAccount(NewAccountId: Guid)
@@ -51,6 +40,6 @@ codeunit 8890 "Send Email"
end;
var
- GlobalEmailConnector: Interface "Email Connector";
+ EmailConnector: Interface "Email Connector";
AccountId: Guid;
}
\ No newline at end of file
diff --git a/src/System Application/App/Email/src/Message/EmailMessage.Codeunit.al b/src/System Application/App/Email/src/Message/EmailMessage.Codeunit.al
index d3384669db..9d1999f25e 100644
--- a/src/System Application/App/Email/src/Message/EmailMessage.Codeunit.al
+++ b/src/System Application/App/Email/src/Message/EmailMessage.Codeunit.al
@@ -35,21 +35,6 @@ codeunit 8904 "Email Message"
EmailMessageImpl.Create(ToRecipients, Subject, Body, HtmlFormatted);
end;
- ///
- /// Creates the email with recipients, subject, and body.
- ///
- /// The recipient(s) of the email. A string containing the email addresses of the recipients separated by semicolon.
- /// The subject of the email.
- /// The body of the email.
- /// Whether the body is HTML formatted.
- /// If the body is of HTML formatting, most of it will be sanitized. Keeping only tags and no styling.
- /// Sanitize is only applicable if the body is HTML formatted. It also helps prevent potential email messages from hiding images and text from the user.
- procedure Create(ToRecipients: Text; Subject: Text; Body: Text; HtmlFormatted: Boolean; Sanitize: Boolean)
- begin
- EmailMessageImpl.Create(ToRecipients, Subject, Body, HtmlFormatted, Sanitize);
- end;
-
-
///
/// Creates the email with recipients, subject, and body.
///
@@ -58,11 +43,8 @@ codeunit 8904 "Email Message"
/// The body of the email
/// Whether the body is HTML formatted
procedure Create(ToRecipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean)
- var
- CCRecipients: List of [Text];
- BCCRecipients: List of [Text];
begin
- EmailMessageImpl.Create(ToRecipients, Subject, Body, HtmlFormatted, CCRecipients, BCCRecipients, false);
+ EmailMessageImpl.Create(ToRecipients, Subject, Body, HtmlFormatted);
end;
///
@@ -76,7 +58,7 @@ codeunit 8904 "Email Message"
/// TThe BCC recipient(s) of the email. A list of email addresses that will be listed as BCC.
procedure Create(ToRecipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; CCRecipients: List of [Text]; BCCRecipients: List of [Text])
begin
- EmailMessageImpl.Create(ToRecipients, Subject, Body, HtmlFormatted, CCRecipients, BCCRecipients, false);
+ EmailMessageImpl.Create(ToRecipients, Subject, Body, HtmlFormatted, CCRecipients, BCCRecipients);
end;
///
@@ -101,11 +83,8 @@ codeunit 8904 "Email Message"
/// Whether the body is HTML formatted.
/// The external message id to reply to.
procedure CreateReply(ToRecipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text)
- var
- CCRecipients: List of [Text];
- BCCRecipients: List of [Text];
begin
- EmailMessageImpl.CreateReply(ToRecipients, Subject, Body, HtmlFormatted, ExternalId, CCRecipients, BCCRecipients);
+ EmailMessageImpl.CreateReply(ToRecipients, Subject, Body, HtmlFormatted, ExternalId);
end;
///
diff --git a/src/System Application/App/Email/src/Message/EmailMessageImpl.Codeunit.al b/src/System Application/App/Email/src/Message/EmailMessageImpl.Codeunit.al
index ece16a60a8..d471303a90 100644
--- a/src/System Application/App/Email/src/Message/EmailMessageImpl.Codeunit.al
+++ b/src/System Application/App/Email/src/Message/EmailMessageImpl.Codeunit.al
@@ -53,50 +53,57 @@ codeunit 8905 "Email Message Impl."
end;
procedure Create(ToRecipients: Text; Subject: Text; Body: Text; HtmlFormatted: Boolean)
+ var
+ EmptyList: List of [Text];
begin
- Create(ToRecipients, Subject, Body, HtmlFormatted, false);
+#pragma warning disable AA0205
+ Create(EmptyList, Subject, Body, HtmlFormatted);
+#pragma warning restore AA0205
+
+ SetRecipients(Enum::"Email Recipient Type"::"To", ToRecipients);
end;
- procedure Create(ToRecipients: Text; Subject: Text; Body: Text; HtmlFormatted: Boolean; Sanitize: Boolean)
+ procedure Create(Recipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean)
var
- Recipients: List of [Text];
- CCRecipients: List of [Text];
- BCCRecipients: List of [Text];
+ EmptyList: List of [Text];
begin
- Create(Recipients, Subject, Body, HtmlFormatted, CCRecipients, BCCRecipients, Sanitize);
-
- SetRecipients(Enum::"Email Recipient Type"::"To", ToRecipients);
+#pragma warning disable AA0205
+ Create(Recipients, Subject, Body, HtmlFormatted, EmptyList, EmptyList);
+#pragma warning restore AA0205
end;
- procedure Create(Recipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; CCRecipients: List of [Text]; BCCRecipients: List of [Text]; Sanitize: Boolean)
+ procedure Create(Recipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; CCRecipients: List of [Text]; BCCRecipients: List of [Text])
begin
InitializeCreation();
- UpdateMessage(Recipients, Subject, Body, HtmlFormatted, '', CCRecipients, BCCRecipients, Sanitize);
+ UpdateMessage(Recipients, Subject, Body, HtmlFormatted, '', CCRecipients, BCCRecipients);
end;
procedure CreateReply(ToRecipients: Text; Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text)
var
- Recipients: List of [Text];
- CCRecipients: List of [Text];
- BCCRecipients: List of [Text];
+ EmptyList: List of [Text];
begin
- CreateReply(Recipients, Subject, Body, HtmlFormatted, ExternalId, CCRecipients, BCCRecipients);
+ CreateReply(EmptyList, Subject, Body, HtmlFormatted, ExternalId, EmptyList, EmptyList);
SetRecipients(Enum::"Email Recipient Type"::"To", ToRecipients);
end;
- procedure CreateReply(ToRecipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text; CCRecipients: List of [Text]; BCCRecipients: List of [Text])
+ procedure CreateReply(ToRecipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text)
+ var
+ EmptyList: List of [Text];
begin
- InitializeCreation();
- UpdateMessage(ToRecipients, Subject, Body, HtmlFormatted, ExternalId, CCRecipients, BCCRecipients, false);
+ CreateReply(ToRecipients, Subject, Body, HtmlFormatted, ExternalId, EmptyList, EmptyList);
end;
procedure CreateReplyAll(Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text)
var
- ToRecipients: List of [Text];
- CCRecipients: List of [Text];
- BCCRecipients: List of [Text];
+ EmptyList: List of [Text];
begin
- CreateReply(ToRecipients, Subject, Body, HtmlFormatted, ExternalId, CCRecipients, BCCRecipients);
+ CreateReply(EmptyList, Subject, Body, HtmlFormatted, ExternalId, EmptyList, EmptyList);
+ end;
+
+ procedure CreateReply(ToRecipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text; CCRecipients: List of [Text]; BCCRecipients: List of [Text])
+ begin
+ InitializeCreation();
+ UpdateMessage(ToRecipients, Subject, Body, HtmlFormatted, ExternalId, CCRecipients, BCCRecipients);
end;
local procedure InitializeCreation()
@@ -108,11 +115,8 @@ codeunit 8905 "Email Message Impl."
GlobalEmailMessage.Insert();
end;
- procedure UpdateMessage(ToRecipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text; CCRecipients: List of [Text]; BCCRecipients: List of [Text]; Sanitize: Boolean)
+ procedure UpdateMessage(ToRecipients: List of [Text]; Subject: Text; Body: Text; HtmlFormatted: Boolean; ExternalId: Text; CCRecipients: List of [Text]; BCCRecipients: List of [Text])
begin
- if HtmlFormatted and Sanitize then
- Body := SanitizeBody(Body);
-
SetBodyValue(Body);
SetSubjectValue(Subject);
SetBodyHTMLFormattedValue(HtmlFormatted);
@@ -124,14 +128,6 @@ codeunit 8905 "Email Message Impl."
SetRecipients(Enum::"Email Recipient Type"::Bcc, BCCRecipients);
end;
- local procedure SanitizeBody(Body: Text): Text
- var
- AppHTMLSanitizer: DotNet AppHtmlSanitizer;
- begin
- AppHTMLSanitizer := AppHTMLSanitizer.AppHtmlSanitizer();
- exit(AppHTMLSanitizer.SanitizeEmail(Body));
- end;
-
procedure Modify()
var
EmailMessage: Record "Email Message";
diff --git a/src/System Application/Test Library/Email/app.json b/src/System Application/Test Library/Email/app.json
index e7b8e097b6..e140e4e19f 100644
--- a/src/System Application/Test Library/Email/app.json
+++ b/src/System Application/Test Library/Email/app.json
@@ -40,10 +40,6 @@
{
"from": 134694,
"to": 134694
- },
- {
- "from": 134702,
- "to": 134702
}
],
"contextSensitiveHelpUrl": "https://go.microsoft.com/fwlink/?linkid=2134520",
diff --git a/src/System Application/Test Library/Email/src/TestEmailConnector.EnumExt.al b/src/System Application/Test Library/Email/src/TestEmailConnector.EnumExt.al
index b438681ab3..d6810edf0b 100644
--- a/src/System Application/Test Library/Email/src/TestEmailConnector.EnumExt.al
+++ b/src/System Application/Test Library/Email/src/TestEmailConnector.EnumExt.al
@@ -13,14 +13,8 @@ enumextension 134684 "Test Email Connector" extends "Email Connector"
{
Implementation = "Email Connector" = "Test Email Connector";
}
-#if not CLEAN26
value(134685; "Test Email Connector v2")
{
Implementation = "Email Connector" = "Test Email Connector v2";
}
-#endif
- value(134686; "Test Email Connector v3")
- {
- Implementation = "Email Connector" = "Test Email Connector v3";
- }
}
\ No newline at end of file
diff --git a/src/System Application/Test Library/Email/src/TestEmailConnectorv2.Codeunit.al b/src/System Application/Test Library/Email/src/TestEmailConnectorv2.Codeunit.al
index c7602641ad..7e2d9dd685 100644
--- a/src/System Application/Test Library/Email/src/TestEmailConnectorv2.Codeunit.al
+++ b/src/System Application/Test Library/Email/src/TestEmailConnectorv2.Codeunit.al
@@ -1,4 +1,3 @@
-#if not CLEAN26
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
@@ -8,9 +7,7 @@ namespace System.TestLibraries.Email;
using System.Email;
-#pragma warning disable AL0432
-codeunit 134682 "Test Email Connector v2" implements "Email Connector v2"
-#pragma warning restore AL0432
+codeunit 134682 "Test Email Connector v2" implements "Email Connector v2", "Email Connector" // Temporary bug #540622
{
var
@@ -90,5 +87,4 @@ codeunit 134682 "Test Email Connector v2" implements "Email Connector v2"
if ConnectorMock.FailOnMarkAsRead() then
Error('Failed to mark email as read');
end;
-}
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/System Application/Test Library/Email/src/TestEmailConnectorv3.Codeunit.al b/src/System Application/Test Library/Email/src/TestEmailConnectorv3.Codeunit.al
deleted file mode 100644
index 20c89be8aa..0000000000
--- a/src/System Application/Test Library/Email/src/TestEmailConnectorv3.Codeunit.al
+++ /dev/null
@@ -1,90 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-
-namespace System.TestLibraries.Email;
-
-using System.Email;
-
-codeunit 134702 "Test Email Connector v3" implements "Email Connector v3"
-{
-
- var
- ConnectorMock: Codeunit "Connector Mock";
-
- procedure Send(EmailMessage: Codeunit "Email Message"; AccountId: Guid)
- begin
- ConnectorMock.SetEmailMessageID(EmailMessage.GetId());
- Commit();
- if ConnectorMock.FailOnSend() then
- Error('Failed to send email');
- end;
-
- procedure GetAccounts(var Accounts: Record "Email Account")
- begin
- ConnectorMock.GetAccounts(Accounts, Enum::"Email Connector"::"Test Email Connector v3");
- end;
-
- procedure ShowAccountInformation(AccountId: Guid)
- begin
- Message('Showing information for account: %1', AccountId);
- end;
-
- procedure RegisterAccount(var EmailAccount: Record "Email Account"): Boolean
- begin
- if ConnectorMock.FailOnRegisterAccount() then
- Error('Failed to register account');
-
- if ConnectorMock.UnsuccessfulRegister() then
- exit(false);
-
- EmailAccount."Account Id" := CreateGuid();
- EmailAccount."Email Address" := 'Test email address';
- EmailAccount.Name := 'Test account';
-
- exit(true);
- end;
-
- procedure DeleteAccount(AccountId: Guid): Boolean
- var
- TestEmailAccount: Record "Test Email Account";
- begin
- if TestEmailAccount.Get(AccountId) then
- exit(TestEmailAccount.Delete());
- exit(false);
- end;
-
- procedure GetLogoAsBase64(): Text
- begin
-
- end;
-
- procedure GetDescription(): Text[250]
- begin
- exit('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ornare ante a est commodo interdum. Pellentesque eu diam maximus, faucibus neque ut, viverra leo. Praesent ullamcorper nibh ut pretium dapibus. Nullam eu dui libero. Etiam ac cursus metus.')
- end;
-
- procedure Reply(var EmailMessage: Codeunit "Email Message"; AccountId: Guid)
- begin
- if ConnectorMock.FailOnReply() then
- Error('Failed to send email');
- end;
-
- procedure RetrieveEmails(AccountId: Guid; var EmailInbox: Record "Email Inbox"; var Filter: Record "Email Retrieval Filters" temporary)
- begin
- if ConnectorMock.FailOnRetrieveEmails() then
- Error('Failed to retrieve emails');
-
- ConnectorMock.CreateEmailInbox(AccountId, Enum::"Email Connector"::"Test Email Connector v3", EmailInbox);
- EmailInbox.Mark(true);
- ConnectorMock.CreateEmailInbox(AccountId, Enum::"Email Connector"::"Test Email Connector v3", EmailInbox);
- EmailInbox.Mark(true);
- end;
-
- procedure MarkAsRead(AccountId: Guid; ConversationId: Text)
- begin
- if ConnectorMock.FailOnMarkAsRead() then
- Error('Failed to mark email as read');
- end;
-}
\ No newline at end of file
diff --git a/src/System Application/Test/Email/src/EmailTest.Codeunit.al b/src/System Application/Test/Email/src/EmailTest.Codeunit.al
index 62ffcc5523..dc28d58a37 100644
--- a/src/System Application/Test/Email/src/EmailTest.Codeunit.al
+++ b/src/System Application/Test/Email/src/EmailTest.Codeunit.al
@@ -390,6 +390,7 @@ codeunit 134685 "Email Test"
Assert.ExpectedError(EmailMessageCannotBeEditedErr);
end;
+
[Test]
[HandlerFunctions('EmailEditorHandler,OnEmailEditorClose')]
procedure OpenInEditorModallyDiscardAOptionTest()
@@ -1402,7 +1403,6 @@ codeunit 134685 "Email Test"
var
EmailAccount: Record "Email Account";
EmailInbox: Record "Email Inbox";
- TempFilters: Record "Email Retrieval Filters" temporary;
ConnectorMock: Codeunit "Connector Mock";
begin
// [Scenario] Retrieving emails with a V1 connector should fail
@@ -1412,14 +1412,12 @@ codeunit 134685 "Email Test"
// [When] Retrieving emails
// [Then] An error is thrown that the connector does not support this operation
- asserterror Email.RetrieveEmails(EmailAccount."Account Id", EmailAccount.Connector, EmailInbox, TempFilters);
+ asserterror Email.RetrieveEmails(EmailAccount."Account Id", EmailAccount.Connector, EmailInbox);
Assert.ExpectedError('The selected email connector does not support retrieving emails');
end;
-#if not CLEAN26
[Test]
- [Obsolete('v2 connector is replaced by v3 connector.', '26.0')]
- procedure RetrieveEmailsv2()
+ procedure RetrieveEmails()
var
EmailAccount: Record "Email Account";
EmailInbox: Record "Email Inbox";
@@ -1440,9 +1438,7 @@ codeunit 134685 "Email Test"
InitialId := EmailInbox.Id;
// [When] Retrieving emails
-#pragma warning disable AL0432
Email.RetrieveEmails(EmailAccount."Account Id", EmailAccount.Connector, EmailInbox);
-#pragma warning restore AL0432
// [Then] The EmailInbox will be filled only with new emails and not existing ones
EmailInbox.FindSet();
@@ -1454,8 +1450,7 @@ codeunit 134685 "Email Test"
end;
[Test]
- [Obsolete('v2 connector is replaced by v3 connector.', '26.0')]
- procedure RetrieveEmailsFailv2()
+ procedure RetrieveEmailsFail()
var
EmailAccount: Record "Email Account";
EmailInbox: Record "Email Inbox";
@@ -1477,73 +1472,7 @@ codeunit 134685 "Email Test"
ConnectorMock.FailOnRetrieveEmails(true);
// [When] Retrieving emails
-#pragma warning disable AL0432
asserterror Email.RetrieveEmails(EmailAccount."Account Id", EmailAccount.Connector, EmailInbox);
-#pragma warning restore AL0432
-
- // [Then] The EmailInbox will be filled only with new emails and not existing ones
- Assert.ExpectedError('Failed to retrieve emails');
- end;
-#endif
- [Test]
- procedure RetrieveEmailsv3()
- var
- EmailAccount: Record "Email Account";
- EmailInbox: Record "Email Inbox";
- TempFilters: Record "Email Retrieval Filters" temporary;
- ConnectorMock: Codeunit "Connector Mock";
- InitialId: Integer;
- begin
- // [Scenario] Retrieving emails with a V3 connector will succeed and the EmailInbox will be filled only with new emails and not existing ones
- PermissionsMock.Set('Email Edit');
-
- // [Given] An email account with a V3 connector
- // [Given] Existing emails in Email Inbox
- ConnectorMock.Initialize();
- ConnectorMock.AddAccount(EmailAccount, Enum::"Email Connector"::"Test Email Connector v3");
-
- EmailInbox.DeleteAll();
- ConnectorMock.CreateEmailInbox(EmailAccount."Account Id", EmailAccount.Connector, EmailInbox);
- Assert.AreEqual(1, EmailInbox.Count(), 'Wrong number of emails in the inbox');
- InitialId := EmailInbox.Id;
-
- // [When] Retrieving emails
- Email.RetrieveEmails(EmailAccount."Account Id", EmailAccount.Connector, EmailInbox, TempFilters);
-
- // [Then] The EmailInbox will be filled only with new emails and not existing ones
- EmailInbox.FindSet();
- Assert.AreEqual(2, EmailInbox.Count(), 'Wrong number of emails in the inbox');
-
- repeat
- Assert.AreNotEqual(InitialId, EmailInbox.Id, 'The email should not be the same as the initial one');
- until EmailInbox.Next() = 0;
- end;
-
- [Test]
- procedure RetrieveEmailsFailv3()
- var
- EmailAccount: Record "Email Account";
- EmailInbox: Record "Email Inbox";
- TempFilters: Record "Email Retrieval Filters" temporary;
- ConnectorMock: Codeunit "Connector Mock";
- begin
- // [Scenario] Retrieving emails with a V3 connector fails due to some error
- PermissionsMock.Set('Email Edit');
-
- // [Given] An email account with a V3 connector
- // [Given] Existing emails in Email Inbox
- ConnectorMock.Initialize();
- ConnectorMock.AddAccount(EmailAccount, Enum::"Email Connector"::"Test Email Connector v3");
-
- EmailInbox.DeleteAll();
- ConnectorMock.CreateEmailInbox(EmailAccount."Account Id", EmailAccount.Connector, EmailInbox);
- Assert.AreEqual(1, EmailInbox.Count(), 'Wrong number of emails in the inbox');
-
- // [Given] An error occurs when retrieving emails
- ConnectorMock.FailOnRetrieveEmails(true);
-
- // [When] Retrieving emails
- asserterror Email.RetrieveEmails(EmailAccount."Account Id", EmailAccount.Connector, EmailInbox, TempFilters);
// [Then] The EmailInbox will be filled only with new emails and not existing ones
Assert.ExpectedError('Failed to retrieve emails');
@@ -1566,9 +1495,8 @@ codeunit 134685 "Email Test"
asserterror Email.MarkAsRead(EmailAccount."Account Id", EmailAccount.Connector, Any.AlphabeticText(10));
Assert.ExpectedError('The selected email connector does not support marking emails as read');
end;
-#if not CLEAN26
+
[Test]
- [Obsolete('v2 connector is replaced by v3 connector.', '26.0')]
procedure MarkEmailAsRead()
var
EmailAccount: Record "Email Account";
@@ -1586,7 +1514,6 @@ codeunit 134685 "Email Test"
end;
[Test]
- [Obsolete('v2 connector is replaced by v3 connector.', '26.0')]
procedure MarkEmailAsReadFail()
var
EmailAccount: Record "Email Account";
@@ -1606,45 +1533,6 @@ codeunit 134685 "Email Test"
asserterror Email.MarkAsRead(EmailAccount."Account Id", EmailAccount.Connector, Any.AlphabeticText(10));
Assert.ExpectedError('Failed to mark email as read');
end;
-#endif
-
- [Test]
- procedure MarkEmailAsReadv3()
- var
- EmailAccount: Record "Email Account";
- ConnectorMock: Codeunit "Connector Mock";
- Any: Codeunit Any;
- begin
- // [Scenario] Marking email as read with a V3 connector should succeed with no errors
- // [Given] An email account with a V3 connector
- ConnectorMock.Initialize();
- ConnectorMock.AddAccount(EmailAccount, Enum::"Email Connector"::"Test Email Connector v3");
-
- // [When] Mark email as read
- // [Then] No error occurs
- Email.MarkAsRead(EmailAccount."Account Id", EmailAccount.Connector, Any.AlphabeticText(10));
- end;
-
- [Test]
- procedure MarkEmailAsReadFailv3()
- var
- EmailAccount: Record "Email Account";
- ConnectorMock: Codeunit "Connector Mock";
- Any: Codeunit Any;
- begin
- // [Scenario] Marking email as read with a V3 connector fails due to some error
- // [Given] An email account with a V3 connector
- ConnectorMock.Initialize();
- ConnectorMock.AddAccount(EmailAccount, Enum::"Email Connector"::"Test Email Connector v3");
-
- // [Given] Force an error to occur when marking email as read
- ConnectorMock.FailOnMarkAsRead(true);
-
- // [When] Mark email as read
- // [Then] An error occurs
- asserterror Email.MarkAsRead(EmailAccount."Account Id", EmailAccount.Connector, Any.AlphabeticText(10));
- Assert.ExpectedError('Failed to mark email as read');
- end;
[Test]
procedure ReplyToEmailWithV1Connector()
@@ -1666,9 +1554,7 @@ codeunit 134685 "Email Test"
Assert.ExpectedError('The selected email connector does not support replying to emails');
end;
-#if not CLEAN26
[Test]
- [Obsolete('v2 connector is replaced by v3 connector.', '26.0')]
procedure ReplyToEmail()
var
EmailAccount: Record "Email Account";
@@ -1688,7 +1574,6 @@ codeunit 134685 "Email Test"
end;
[Test]
- [Obsolete('v2 connector is replaced by v3 connector.', '26.0')]
procedure ReplyToEmailWithNoRecipients()
var
EmailAccount: Record "Email Account";
@@ -1707,45 +1592,6 @@ codeunit 134685 "Email Test"
asserterror Email.Reply(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector);
Assert.ExpectedError('You must specify a valid email account to send the message to');
end;
-#endif
- [Test]
- procedure ReplyToEmailv3()
- var
- EmailAccount: Record "Email Account";
- EmailMessage: Codeunit "Email Message";
- ConnectorMock: Codeunit "Connector Mock";
- Any: Codeunit Any;
- begin
- // [Scenario] Replying to an email with a V2 connector should succeed with no errors
- // [Given] An email account with a V2 connector
- ConnectorMock.Initialize();
- ConnectorMock.AddAccount(EmailAccount, Enum::"Email Connector"::"Test Email Connector v3");
- CreateEmailReply(EmailMessage);
-
- // [When] Reply to email
- // [Then] No error occurs and reply returns true
- Assert.IsTrue(Email.Reply(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector), 'Did not succeed in replying the email');
- end;
-
- [Test]
- procedure ReplyToEmailWithNoRecipientsv3()
- var
- EmailAccount: Record "Email Account";
- EmailMessage: Codeunit "Email Message";
- ConnectorMock: Codeunit "Connector Mock";
- Any: Codeunit Any;
- begin
- // [Scenario] Replying to an email with a V2 connector should succeed with no errors
- // [Given] An email account with a V2 connector
- ConnectorMock.Initialize();
- ConnectorMock.AddAccount(EmailAccount, Enum::"Email Connector"::"Test Email Connector v3");
- CreateEmailReply(EmailMessage, '');
-
- // [When] Reply to email
- // [Then] No error occurs and reply returns true
- asserterror Email.Reply(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector);
- Assert.ExpectedError('You must specify a valid email account to send the message to');
- end;
[Test]
procedure ReplyAllToEmailWithV1Connector()
@@ -1767,9 +1613,7 @@ codeunit 134685 "Email Test"
Assert.ExpectedError('The selected email connector does not support replying to emails');
end;
-#if not CLEAN26
[Test]
- [Obsolete('v2 connector is replaced by v3 connector.', '26.0')]
procedure ReplyAllToEmail()
var
EmailAccount: Record "Email Account";
@@ -1789,7 +1633,6 @@ codeunit 134685 "Email Test"
end;
[Test]
- [Obsolete('v2 connector is replaced by v3 connector.', '26.0')]
procedure ReplyAllToEmailFail()
var
EmailAccount: Record "Email Account";
@@ -1810,48 +1653,6 @@ codeunit 134685 "Email Test"
// [Then] No error occurs and reply returns true
Assert.IsFalse(Email.ReplyAll(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector), 'Did succeed in replying the email when it should fail');
end;
-#endif
-
- [Test]
- procedure ReplyAllToEmailv3()
- var
- EmailAccount: Record "Email Account";
- EmailMessage: Codeunit "Email Message";
- ConnectorMock: Codeunit "Connector Mock";
- Any: Codeunit Any;
- begin
- // [Scenario] Replying to an email with a V2 connector should succeed with no errors
- // [Given] An email account with a V2 connector
- ConnectorMock.Initialize();
- ConnectorMock.AddAccount(EmailAccount, Enum::"Email Connector"::"Test Email Connector v3");
- CreateEmailReplyAll(EmailMessage);
-
- // [When] Reply to email
- // [Then] No error occurs and reply returns true
- Assert.IsTrue(Email.ReplyAll(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector), 'Did not succeed in replying the email');
- end;
-
- [Test]
- procedure ReplyAllToEmailFailv3()
- var
- EmailAccount: Record "Email Account";
- EmailMessage: Codeunit "Email Message";
- ConnectorMock: Codeunit "Connector Mock";
- Any: Codeunit Any;
- begin
- // [Scenario] Replying to an email with a V2 connector fails due to some error
- // [Given] An email account with a V2 connector
- ConnectorMock.Initialize();
- ConnectorMock.AddAccount(EmailAccount, Enum::"Email Connector"::"Test Email Connector v3");
- CreateEmailReplyAll(EmailMessage);
-
- // [Given] Force the connector to fail on reply
- ConnectorMock.FailOnReply(true);
-
- // [When] Reply to email
- // [Then] No error occurs and reply returns true
- Assert.IsFalse(Email.ReplyAll(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector), 'Did succeed in replying the email when it should fail');
- end;
[Test]
procedure EnqueueReplyToEmailWithV1Connector()
@@ -1873,9 +1674,8 @@ codeunit 134685 "Email Test"
asserterror Email.EnqueueReply(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector, EmailOutbox);
Assert.ExpectedError('The selected email connector does not support replying to emails');
end;
-#if not CLEAN26
+
[Test]
- [Obsolete('v2 connector is replaced by v3 connector.', '26.0')]
procedure EnqueueReplyToEmail()
var
EmailAccount: Record "Email Account";
@@ -1899,7 +1699,6 @@ codeunit 134685 "Email Test"
end;
[Test]
- [Obsolete('v2 connector is replaced by v3 connector.', '26.0')]
procedure EnqueueReplyToEmailWithNoRecipients()
var
EmailAccount: Record "Email Account";
@@ -1919,51 +1718,6 @@ codeunit 134685 "Email Test"
asserterror Email.EnqueueReply(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector, EmailOutbox);
Assert.ExpectedError('You must specify a valid email account to send the message to');
end;
-#endif
-
- [Test]
- procedure EnqueueReplyToEmailv3()
- var
- EmailAccount: Record "Email Account";
- EmailOutbox: Record "Email Outbox";
- EmailMessage: Codeunit "Email Message";
- ConnectorMock: Codeunit "Connector Mock";
- Any: Codeunit Any;
- begin
- // [Scenario] Replying to an email with a V2 connector should succeed with no errors
- // [Given] An email account with a V2 connector
- ConnectorMock.Initialize();
- ConnectorMock.AddAccount(EmailAccount, Enum::"Email Connector"::"Test Email Connector v3");
- CreateEmailReply(EmailMessage);
-
- // [When] Reply to email
- // [Then] No error occurs and reply returns true
- Assert.IsTrue(IsNullGuid(EmailOutbox."Message Id"), 'The email message id in the outbox should be empty');
- Email.EnqueueReply(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector, EmailOutbox);
-
- Assert.AreEqual(EmailMessage.GetId(), EmailOutbox."Message Id", 'The email message id should be the same as the one in the outbox');
- end;
-
- [Test]
- procedure EnqueueReplyToEmailWithNoRecipientsv3()
- var
- EmailAccount: Record "Email Account";
- EmailOutbox: Record "Email Outbox";
- EmailMessage: Codeunit "Email Message";
- ConnectorMock: Codeunit "Connector Mock";
- Any: Codeunit Any;
- begin
- // [Scenario] Replying to an email with a V2 connector should succeed with no errors
- // [Given] An email account with a V2 connector
- ConnectorMock.Initialize();
- ConnectorMock.AddAccount(EmailAccount, Enum::"Email Connector"::"Test Email Connector v3");
- CreateEmailReply(EmailMessage, '');
-
- // [When] Reply to email
- // [Then] No error occurs and reply returns true
- asserterror Email.EnqueueReply(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector, EmailOutbox);
- Assert.ExpectedError('You must specify a valid email account to send the message to');
- end;
[Test]
procedure EnqueueReplyAllToEmailWithV1Connector()
@@ -1986,9 +1740,7 @@ codeunit 134685 "Email Test"
Assert.ExpectedError('The selected email connector does not support replying to emails');
end;
-#if not CLEAN26
[Test]
- [Obsolete('v2 connector is replaced by v3 connector.', '26.0')]
procedure EnqueueReplyAllToEmailFail()
var
EmailAccount: Record "Email Account";
@@ -2010,30 +1762,6 @@ codeunit 134685 "Email Test"
// [Then] No error occurs and reply returns true
Email.EnqueueReplyAll(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector, EmailOutbox);
end;
-#endif
-
- [Test]
- procedure EnqueueReplyAllToEmailFailv3()
- var
- EmailAccount: Record "Email Account";
- EmailOutbox: Record "Email Outbox";
- EmailMessage: Codeunit "Email Message";
- ConnectorMock: Codeunit "Connector Mock";
- Any: Codeunit Any;
- begin
- // [Scenario] Replying to an email with a V2 connector fails due to some error
- // [Given] An email account with a V2 connector
- ConnectorMock.Initialize();
- ConnectorMock.AddAccount(EmailAccount, Enum::"Email Connector"::"Test Email Connector v3");
- CreateEmailReplyAll(EmailMessage);
-
- // [Given] Force the connector to fail on reply
- ConnectorMock.FailOnReply(true);
-
- // [When] Reply to email
- // [Then] No error occurs and reply returns true
- Email.EnqueueReplyAll(EmailMessage, Any.AlphabeticText(10), EmailAccount."Account Id", EmailAccount.Connector, EmailOutbox);
- end;
local procedure CreateEmail(var EmailMessage: Codeunit "Email Message")
var