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
- Lire un message : ouvrir un message protégé avec le SDK
- Plusieurs destinataires
- Codes de statut