Envoyer votre premier message
Ce guide vous montre comment envoyer un message securise avec le SDK.
Concepts de base
Un message Secure Exchanges comprend :
- Destinataire(s) : Email et/ou telephone
- Sujet : Titre du message
- Corps : Contenu HTML ou texte
- Options : Expiration, notifications, mot de passe
Exemple rapide
using SecureExchangesSDK.Helpers;
using SecureExchangesSDK.Models.Args;
using SecureExchangesSDK.Models.Entity;
using SecureExchangesSDK.SecureExchanges;
var recipients = new List<RecipientInfo>
{
new RecipientInfo { Email = "destinataire@example.com" }
};
Uri endpoint = new Uri("https://www.secure-exchanges.com/_api/0217/0217.asmx");
var args = new MutliRecipientArgs(
endpoint, serial, apiUser, apiPassword,
recipients,
"Contenu de mon message",
"Mon sujet",
password: null,
filesList: null,
SendMethodEnum.onlyEmail,
false, true, true, "fr-CA", 5, 1440
);
var response = MessageHelper.MultiRecipientMessage(args);
if (response.Status == 200)
{
Console.WriteLine($"URL: {response.RecipientsAnswer[0].Answer.URL}");
}
Exemple complet avec contexte
Scenario : Envoi de mot de passe temporaire
Une entreprise doit envoyer des mots de passe temporaires a ses clients de maniere securisee.
using System;
using System.Collections.Generic;
using SecureExchangesSDK.Helpers;
using SecureExchangesSDK.Models.Args;
using SecureExchangesSDK.Models.Answer;
using SecureExchangesSDK.Models.Entity;
using SecureExchangesSDK.SecureExchanges;
public class PasswordDeliveryService
{
private readonly Guid _serial;
private readonly Guid _apiUser;
private readonly Guid _apiPassword;
private readonly Uri _endpoint;
private static readonly Uri DefaultEndpoint = new Uri("https://www.secure-exchanges.com/_api/0217/0217.asmx");
public PasswordDeliveryService(Guid serial, Guid apiUser, Guid apiPassword)
{
_serial = serial;
_apiUser = apiUser;
_apiPassword = apiPassword;
_endpoint = DefaultEndpoint;
}
/// <summary>
/// Envoie un mot de passe temporaire de maniere securisee
/// </summary>
public PasswordDeliveryResult SendTemporaryPassword(
string clientEmail,
string clientName,
string temporaryPassword,
int expirationHours = 24)
{
// Construction du message HTML
string htmlBody = $@"
<div style='font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;'>
<h2>Bonjour {clientName},</h2>
<p>Voici votre mot de passe temporaire :</p>
<div style='background-color: #f5f5f5; padding: 20px; border-radius: 5px; margin: 20px 0;'>
<code style='font-size: 18px; font-weight: bold;'>{temporaryPassword}</code>
</div>
<p><strong>Important :</strong></p>
<ul>
<li>Ce mot de passe expire dans {expirationHours} heures</li>
<li>Changez-le des votre premiere connexion</li>
<li>Ne partagez jamais ce mot de passe</li>
</ul>
<p>Cordialement,<br/>L'equipe Support</p>
</div>";
// Configuration des destinataires
var recipients = new List<RecipientInfo>
{
new RecipientInfo { Email = clientEmail }
};
// Configuration des arguments
var args = new MutliRecipientArgs(
_endpoint,
_serial,
_apiUser,
_apiPassword,
recipients,
htmlBody,
subject: "Votre mot de passe temporaire",
password: null, // Pas de mot de passe supplementaire
filesList: null,
SendMethodEnum.onlyEmail,
sendByMyOwnSMTPServer: false,
showSubject: true,
getNotify: true, // Recevoir une notification a l'ouverture
culture: "fr-CA",
maxOpeningTime: 3, // Maximum 3 ouvertures
expirationMinutes: expirationHours * 60
);
// Envoi du message
MultiRecipientAnswer response = MessageHelper.MultiRecipientMessage(args);
// Traitement de la reponse
if (response.Status == 200)
{
var answer = response.RecipientsAnswer[0].Answer;
return new PasswordDeliveryResult
{
Success = true,
MessageUrl = answer.URL,
OpeningCode = answer.DefaultOpeningCode,
TrackingId = ExtractTrackingId(answer.URL)
};
}
else
{
return new PasswordDeliveryResult
{
Success = false,
ErrorMessage = response.Data,
ErrorCode = response.Status
};
}
}
private string ExtractTrackingId(string url)
{
// Extraction du tracking ID depuis l'URL
var uri = new Uri(url);
var query = System.Web.HttpUtility.ParseQueryString(uri.Query);
return query["Sess"];
}
}
public class PasswordDeliveryResult
{
public bool Success { get; set; }
public string MessageUrl { get; set; }
public string OpeningCode { get; set; }
public string TrackingId { get; set; }
public string ErrorMessage { get; set; }
public int ErrorCode { get; set; }
}
// Utilisation
class Program
{
static void Main()
{
var service = new PasswordDeliveryService(serial, apiUser, apiPassword);
var result = service.SendTemporaryPassword(
clientEmail: "client@example.com",
clientName: "Jean Dupont",
temporaryPassword: "TempPass123!",
expirationHours: 24
);
if (result.Success)
{
Console.WriteLine($"Mot de passe envoye!");
Console.WriteLine($"URL: {result.MessageUrl}");
Console.WriteLine($"Tracking: {result.TrackingId}");
}
else
{
Console.WriteLine($"Erreur {result.ErrorCode}: {result.ErrorMessage}");
}
}
}
Methodes d'envoi disponibles
| Methode | Description |
|---|---|
onlyEmail |
Envoi par email uniquement |
onlySMS |
Envoi par SMS uniquement |
msgEmailCodeSMS |
Message par email, code par SMS |
msgSMSCodeEmail |
Message par SMS, code par email |
Exemple avec double authentification (Email + SMS)
// Le destinataire doit avoir un email ET un telephone
var recipients = new List<RecipientInfo>
{
new RecipientInfo
{
Email = "client@example.com",
Phone = "+1234567890" // Format international
}
};
var args = new MutliRecipientArgs(
endpoint, serial, apiUser, apiPassword,
recipients,
"Message confidentiel",
"Sujet",
password: null,
filesList: null,
SendMethodEnum.msgEmailCodeSMS, // Message par email, code par SMS
false, true, true, "fr-CA", 5, 1440
);
Options de configuration
Protection par mot de passe
var args = new MutliRecipientArgs(
// ... autres parametres ...
password: "MotDePasseSecret123" // Le destinataire devra entrer ce mot de passe
);
Notification a l'ouverture
var args = new MutliRecipientArgs(
// ... autres parametres ...
getNotify: true // Vous recevrez un email quand le message sera ouvert
);
Expiration et limite d'ouvertures
var args = new MutliRecipientArgs(
// ... autres parametres ...
maxOpeningTime: 5, // Maximum 5 ouvertures
expirationMinutes: 43200 // 30 jours maximum
);
Gestion des erreurs
var response = MessageHelper.MultiRecipientMessage(args);
switch (response.Status)
{
case 200:
Console.WriteLine("Succes!");
break;
case 400:
Console.WriteLine($"Parametres invalides: {response.Data}");
break;
case 401:
Console.WriteLine("Identifiants API invalides");
break;
case 403:
Console.WriteLine("Licence invalide ou expiree");
break;
default:
Console.WriteLine($"Erreur {response.Status}: {response.Data}");
break;
}