Table of Contents

Mot de passe et SMS

Renforcer la protection d'un message : exiger un mot de passe, un code d'ouverture envoyé par un second canal, ou envoyer le lien par SMS.

Prérequis

Un envoi qui fonctionne déjà : voir Envoyer un message.

Modes d'envoi

Le mode d'envoi choisit le canal du lien et celui du code d'ouverture. Il s'applique à tous les destinataires de l'envoi.

Mode Lien envoyé par Code d'ouverture envoyé par
onlyEmail (par défaut) Courriel Aucun
msgSMSOnly SMS Aucun
msgSMSCodeEmail SMS Courriel
msgEmailCodeSms Courriel SMS

Le mot de passe est indépendant du mode : il se combine avec chacun d'eux.

Note

La docstring de send_method indique « 1 = email+SMS ». C'est inexact : 1 correspond à SMS_ONLY, le lien par SMS sans courriel. Fiez-vous au tableau ci-dessus.

Exemple

Lien par courriel, code d'ouverture par SMS et mot de passe.

var recipients = new List<RecipientInfo>
{
    new RecipientInfo { Email = "destinataire@example.com", Phone = "+15145550123" }
};

var args = new MutliRecipientArgs(
    endPointUri: endpoint, serial: serial, user: apiUser, psw: apiPassword,
    recipients: recipients, message: message, subject: subject,
    password: motDePasse,     // à transmettre au destinataire par un autre canal
    filesList: null,
    sendMode: SendMethodEnum.msgEmailCodeSms,
    getBackHtml: false,
    showSubject: true, getNotify: true, cultureID: "fr-CA",
    maximumOpenTime: 3, minutesExpiration: 1440);

var response = MessageHelper.MultiRecipientMessage(args);

Vérifiez ensuite le statut de l'envoi et celui de chaque destinataire : voir Plusieurs destinataires.

Le mot de passe

Point Détail
Portée Un seul mot de passe pour tous les destinataires de l'envoi. Pour des mots de passe différents, faites un envoi par destinataire.
Transmission Communiquez-le au destinataire par un autre canal que le message (téléphone, en personne). Quiconque obtient le lien et le mot de passe peut ouvrir le message.
Choix Long et unique pour chaque envoi. Si votre application le génère, utilisez un générateur cryptographique : RandomNumberGenerator en .NET, secrets en Python, random_bytes en PHP.
Code source Ne l'écrivez jamais dans le code ni dans un fichier de configuration. Ne le journalisez pas.

Le numéro de téléphone

Point Détail
Format International, avec l'indicatif du pays : +15145550123. Sans espaces ni tirets : le numéro est validé après nettoyage, mais transmis tel que saisi.
Validation Dans tout mode autre que onlyEmail, chaque destinataire doit avoir un numéro qui peut recevoir des SMS, sinon l'envoi est refusé (statut 400). Validez-le avant l'envoi avec IsValidPhoneNumberAndCanReceiveSMS.
Courriel Obligatoire, sauf en msgSMSOnly.

Erreurs fréquentes

Symptôme Cause probable Solution
Statut 400 « Invalid phone number (or can't recieve SMS) » Numéro absent, sans indicatif de pays, ou ligne fixe Passez un numéro mobile au format international.
Statut 400 « Invalid email » Adresse absente ou mal formée, dans un mode autre que msgSMSOnly Validez l'adresse avec IsValidEmailAddress.
.NET : msgEmailCodeSMS ne compile pas Casse : les anciens guides écrivaient msgEmailCodeSMS ou onlySMS Utilisez les noms du tableau des modes.
Le destinataire ne peut pas ouvrir le message Mot de passe non reçu ou mal transmis Vérifiez le canal par lequel vous l'avez communiqué.
Attention

Renseignements personnels. En cas d'erreur, le texte retourné par le SDK peut contenir l'adresse ou le numéro du destinataire. Ne le journalisez pas tel quel : gardez le statut et le numéro de suivi.

Et ensuite