MercatorTunnel bevat de nodige resources voor de voorbereiding van een e-mail in Outlook. Dit kan dan ook worden gerealiseerd met deze eenvoudige code:
MercatorOutlook.OutlookStatic.SendMail("Test sujet", "Mercator", "info@mercator.eu",
"<html><body>Contenu<br><b>bold</b></body></html>",
new string[2] { @"C:\Test\Test.zip", @"C:\Test\Params2.xls" });
Daartoe moet u dus de volgende parameters invoeren:
- onderwerp van de e-mail
- naam van de bestemmeling van de e-mail
- e-mailadres van de bestemmeling van de e-mail
- content, hetzij in HTML-formaat (zoals in dit voorbeeld), hetzij rechtstreeks in onbewerkte tekst (zonder HTML-code)
- een stringtabel met eventuele bijlagen. Als er geen bijlage moet worden toegevoegd, kunt u de waarde null invoeren.
Sinds versie 11.0 van Mercator is het mogelijk om dezelfde methode te gebruiken om een email voor te bereiden in de Nieuwe Outlook (Monarch project). Er moet echter rekening worden gehouden met de verschillen. De Nieuwe Outlook is gebouwd op een “web” basis. Daarom is het voor Mercator niet mogelijk en zal het ook nooit mogelijk zijn om een Outlook-venster te openen waarin de voorbereide email wordt weergegeven. De gemaakte email is beschikbaar in de map Concepten. Deze beperking kan niet worden gewijzigd. Het wordt opgelegd door Microsoft.
Om ervoor te zorgen dat Mercator de Nieuwe Outlook adresseert in plaats van de lokale versie, moet u de eigenschap MercatorOutlook.OutlookStatic.Office365GraphParams met de verschillende verbindingsparameters vullen. Het aanmaken van beveiligingscomponenten (tenant, secret, ...) wordt op deze pagina uitgebreid gedocumenteerd. Deze toestemming moet toegevoegd worden: Mail.ReadWrite. Deze pagina bevat ook een aanbeveling om een FREE_TABLE_SECRETS SQL-tabel te maken die in de onderstaande code wordt gebruikt..
using MercatorUi;
using MercatorApi;
using System.Linq;
// <CompileWithRoslyn />
namespace Main
{
public class Customizer : MercatorUi.ICustomizers.IExec
{
public void Main(MercatorUi.ICustomizers.ExecAction action)
{
if (action == MercatorUi.ICustomizers.ExecAction.UserLogin)
{
MercatorOutlook.OutlookStatic.Office365GraphParams = null;
if (!string.IsNullOrEmpty(Globals.CurrentUserRecord.CRM_MAIL))
{
var l = Api.Zselect<(string id, string secret)>(Globals.RepData, "select id,secret from FREE_TABLE_SECRETS where id in ('Off365ClId','Off365ClSe','Off365Tena')");
if (l != null)
{
MercatorOutlook.OutlookStatic.Office365GraphParams = new IneoSmtp.Smtp.SendMailOffice365GraphParameters(
l.FirstOrDefault(p => p.id == "Off365ClId").secret,
l.FirstOrDefault(p => p.id == "Off365ClSe").secret,
l.FirstOrDefault(p => p.id == "Off365Tena").secret,
Globals.CurrentUserRecord.CRM_MAIL);
}
}
}
else if (action == MercatorUi.ICustomizers.ExecAction.DossierClose)
{
MercatorOutlook.OutlookStatic.Office365GraphParams = null;
}
}
}
}
Houd er rekening mee dat het email adres te gebruiken om de mailbox te identificeren in USERS.CRM_MAIL is. Er kan een andere kolom uit de tabel USERS worden gebruikt.
Het is noodzakelijk dat de optie "Mailsysteem client" (id = MAILCLIENT) wordt ingesteld op "Outlook".