Personnaliser le traitement des courriels

Notre flux de courriel par défaut peut répondre aux exigences de la plupart des applications. Cependant, il arrive que vous ayez besoin d’une plus grande flexibilité, par exemple au moment de la mise en œuvre :

  • de la localisation;

  • d’URL de redirectionpersonnalisées basées sur l’utilisateur ou sur le locataire;

  • de différents modèles de courriel en fonction de l’application ou du locataire.

L’Auth0 Management API fournit des points de terminaison pour vous aider à gérer votre flux de courriel afin de contrôler quand et comment les courriels sont envoyés. Si nécessaire, vous pouvez également mettre en œuvre vos propres points de terminaison de messagerie personnalisés et utiliser ces points de terminaison de l’Auth0 Management API pour vous aider à gérer le reste du flux.

Courriels de vérification

Un courriel de vérification doit être envoyé à chaque utilisateur pour lequel la propriété email_vérified est définie sur false. En général, il s’agit d’utilisateurs connectés par base de données ou d’utilisateurs s’authentifiant auprès de fournisseurs de connexion par réseaux sociaux qui ne valident pas les adresses courriel lors de l’enregistrement d’un nouvel utilisateur.

Vous pouvez demander aux utilisateurs de vérifier leur adresse courriel avant de se connecter avec une règle :

Le point de terminaison Envoyer un courriel de vérification de l’adresse courriel envoie à l’utilisateur un courriel l’invitant à vérifier son adresse électronique.


curl --request POST \
  --url 'https://{yourDomain}/api/v2/jobs/verification-email' \
  --header 'authorization: Bearer {yourMgmtApiAccessToken}' \
  --header 'content-type: application/json' \
  --data '{ "user_id": "{userIdOfVerifyEmailRecipient}", "client_id": "{yourAppClientId}","identity": {"user_id": "5457edea1b8f22891a000004","provider": "google-oauth2"}, "organization_id": "{yourOrganizationId}" }'

Was this helpful?

/
var client = new RestClient("https://{yourDomain}/api/v2/jobs/verification-email");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", "Bearer {yourMgmtApiAccessToken}");
request.AddParameter("application/json", "{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

Was this helpful?

/
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io/ioutil"
)

func main() {

	url := "https://{yourDomain}/api/v2/jobs/verification-email"

	payload := strings.NewReader("{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("content-type", "application/json")
	req.Header.Add("authorization", "Bearer {yourMgmtApiAccessToken}")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := ioutil.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}

Was this helpful?

/
HttpResponse<String> response = Unirest.post("https://{yourDomain}/api/v2/jobs/verification-email")
  .header("content-type", "application/json")
  .header("authorization", "Bearer {yourMgmtApiAccessToken}")
  .body("{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }")
  .asString();

Was this helpful?

/
var axios = require("axios").default;

var options = {
  method: 'POST',
  url: 'https://{yourDomain}/api/v2/jobs/verification-email',
  headers: {
    'content-type': 'application/json',
    authorization: 'Bearer {yourMgmtApiAccessToken}'
  },
  data: {
    user_id: '{userIdOfVerifyEmailRecipient}',
    client_id: '{yourAppClientId}',
    identity: {user_id: '5457edea1b8f22891a000004', provider: 'google-oauth2'},
    organization_id: '{yourOrganizationId}'
  }
};

axios.request(options).then(function (response) {
  console.log(response.data);
}).catch(function (error) {
  console.error(error);
});

Was this helpful?

/
#import <Foundation/Foundation.h>

NSDictionary *headers = @{ @"content-type": @"application/json",
                           @"authorization": @"Bearer {yourMgmtApiAccessToken}" };
NSDictionary *parameters = @{ @"user_id": @"{userIdOfVerifyEmailRecipient}",
                              @"client_id": @"{yourAppClientId}",
                              @"identity": @{ @"user_id": @"5457edea1b8f22891a000004", @"provider": @"google-oauth2" },
                              @"organization_id": @"{yourOrganizationId}" };

NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://{yourDomain}/api/v2/jobs/verification-email"]
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];

NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
                                            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                                if (error) {
                                                    NSLog(@"%@", error);
                                                } else {
                                                    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
                                                    NSLog(@"%@", httpResponse);
                                                }
                                            }];
[dataTask resume];

Was this helpful?

/
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://{yourDomain}/api/v2/jobs/verification-email",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }",
  CURLOPT_HTTPHEADER => [
    "authorization: Bearer {yourMgmtApiAccessToken}",
    "content-type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

Was this helpful?

/
import http.client

conn = http.client.HTTPSConnection("")

payload = "{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }"

headers = {
    'content-type': "application/json",
    'authorization': "Bearer {yourMgmtApiAccessToken}"
    }

conn.request("POST", "/{yourDomain}/api/v2/jobs/verification-email", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))

Was this helpful?

/
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://{yourDomain}/api/v2/jobs/verification-email")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'Bearer {yourMgmtApiAccessToken}'
request.body = "{ \"user_id\": \"{userIdOfVerifyEmailRecipient}\", \"client_id\": \"{yourAppClientId}\",\"identity\": {\"user_id\": \"5457edea1b8f22891a000004\",\"provider\": \"google-oauth2\"}, \"organization_id\": \"{yourOrganizationId}\" }"

response = http.request(request)
puts response.read_body

Was this helpful?

/
import Foundation

let headers = [
  "content-type": "application/json",
  "authorization": "Bearer {yourMgmtApiAccessToken}"
]
let parameters = [
  "user_id": "{userIdOfVerifyEmailRecipient}",
  "client_id": "{yourAppClientId}",
  "identity": [
    "user_id": "5457edea1b8f22891a000004",
    "provider": "google-oauth2"
  ],
  "organization_id": "{yourOrganizationId}"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://{yourDomain}/api/v2/jobs/verification-email")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

Was this helpful?

/

Exiger une adresse courriel vérifiée pour la connexion

Vous pouvez demander aux utilisateurs de vérifier leur adresse courriel avant de se connecter avec une règle :

function (user, context, callback) {
  if (!user.email_verified) {
    return callback(new UnauthorizedError('Please verify your email before logging in.'));
  } else {
    return callback(null, user, context);
  }
}

Was this helpful?

/

Redirections personnalisées

Une redirection personnalisée est utile lorsque vous souhaitez diriger les utilisateurs vers certaines URL en fonction des attributs de l’utilisateur ou du locataire. L’Auth0 Management API fournit un point de terminaison Créer un ticket de vérification du courriel qui génère le lien de vérification pour chaque utilisateur. Ce point de terminaison vous permet de préciser la result_url vers lequel les utilisateurs seront redirigés après avoir validé leur adresse courriel en cliquant sur le lien dans le courriel de vérification.

Nous recommandons d’inscrire l’URL sur la liste verte dans Auth0 Dashboard. Pour plus de détails, veuillez consulter Ajouter des adresses à la liste verte.

Courriels de bienvenue

Un courriel de bienvenue est envoyé aux utilisateurs une fois qu’ils ont vérifié leur adresse courriel.

Envoyez un courriel de bienvenue à l’aide de votre propre API

En utilisant une règle, vous pouvez appeler votre API pour envoyer un courriel de bienvenue uniquement si l’adresse courriel de l’utilisateur a été vérifiée et que le courriel n’a pas été envoyé auparavant.

function (user, context, callback) {

  const request = require('request');

  if (!user.email_verified || user.welcome_email_sent) {
    return callback(null, user, context);
  }

  request.post({
    url: 'https://yourapi.yourcompany.com/mail/welcome',
    json: {
      user: user,
      context: context,
      secretToken: configuration.MY_SECRET_TOKEN,
    },
    timeout: 5000
  }, function(err, response, body){
    if (err)
      return callback(new Error(err));

    // Email sent flag persisted in the user's profile.
    user.app_metadata.welcome_email_sent = true;
    return callback(null, user, context);
  });
}

Was this helpful?

/

Courriel de réinitialisation du mot de passe

Vous pouvez créer un ticket de changement de mot de passe à l’aide du point de terminaison de Management API Auth0 Créer un ticket de modification de mot de passe, puis envoyer le ticket de modification de mot de passe dans un courriel à l’utilisateur. Lorsque l’utilisateur clique sur le lien, il sera invité à réinitialiser son mot de passe à partir du flux de connexion universelle.

En savoir plus