Préparer un mail dans Outlook

0000001941     -      08/01/2025

MercatorTunnel contient les ressources nécessaires pour effectuer la préparation d'un mail dans Outlook. Dès lors, ceci peut être réalisé avec ce simple code :

Zoom
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" });

Les paramètres à passer sont donc :

  • sujet du mail
  • nom du destinataire du mail
  • adresse email du destinataire du mail
  • contenu (soit au format HTML comme dans cet exemple), soit directement en texte brut (sans balise HTML)
  • un tableau de string contenant les attachements éventuels. Si il n'y a pas d'attachement à passer, on peut passer la valeur null.

Depuis la version 11.0 de Mercator, il est possible d'utiliser cette même méthode pour préparer un mail dans le Nouveau Outlook (projet Monarch). Il faut toutefois bien prendre en considération les différences. Le Nouveau Outlook est construit sur une base "web". Dès lors, il n'est pas et ne sera jamais possible pour Mercator d'ouvrir une fenêtre d'Outlook présentant le mail préparé. Le mail créé sera disponible dans le dossier Brouillons. Cette limitation n'est pas modifiable. Elle est imposée par Microsoft.

Pour que Mercator s'adresse au Nouveau Outlook plutôt qu'à la version locale, il faut populer la propriété MercatorOutlook.OutlookStatic.Office365GraphParams avec les différents paramètres de connexion. La création des composants de sécurité (tenant, secret, ...) est largement documentée sur cette page. Cette autorisation doit être ajoutée : Mail.ReadWrite. Cette page reprend aussi une recommandation de créer une table SQL FREE_TABLE_SECRETS qui est utilisée dans le code ci-dessous.

Zoom
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;
            }
        }
    }
}

Notez que l'adresse email qui identifie la boîte mails à utiliser est celle qui se trouve dans USERS.CRM_MAIL. Une autre colonne de la table USERS peut être utilisée.

 Il est nécessaire que l'option "Client système de mails" (id = MAILCLIENT) soit définie sur "Outlook".



Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)