Codage pour la transmission de courrier électronique

Pour les transmissions de courrier électronique où le contenu doit être codé, les différentes commandes de messagerie choisissent l'encodage en fonction de la hiérarchie suivante :

Pourquoi et quand exécuter cette tâche

  • Si le member_ID est spécifié
  • Si le member_ID n'est pas spécifié

L'instruction de tâche de messagerie sortante (SendMsgCmd) utilise l'objet système de messagerie (Messaging) pour créer et envoyer des messages. La hiérarchie de sélection d'encodage dépend si l'instruction de tâche de messagerie spécifie un Member_ID (CmdSendMsg.addMember(getUserID) ou non.

  • Si le member_ID est spécifié
    Déterminez l'encodage approprié :
    • Utilisez la langue préférée de l'utilisateur pour déterminer le codage approprié. L'UserAccessBean.getPreferredLanguageId récupère la colonne LANGUAGE_ID de la table USERS, qui fournit la langue préférée de l'utilisateur.
    • Si l'utilisateur n'a pas de préférence linguistique, utilisez la langue par défaut du magasin pour déterminer l'encodage approprié. StoreAccessBean.getLanguageId récupère la colonne LANGUAGE_ID de la table STORE, qui fournit la langue par défaut du magasin. Voici un exemple de la façon de faire :
      
      ...
      <c:set var="preferredLanguage"
      value="${WCParam.usr_preferredLanguage}"/>
      <c:if test="${empty preferredLanguage}">
      <c:set var="preferredLanguage"
      value="${CommandContext.languageId}"/>
      </c:if> 
      ...
      
  • Si le member_ID n'est pas spécifié

    Utiliser la langue par défaut du site L'objet système de messagerie (Messaging) définit la langue préférée sur "DefaultLang" qui est remplacée par la langue par défaut du site par le code de l'adaptateur de messagerie.

    Le système de messagerie sortante utilise des modèles de composition de page JavaServer pour un certain nombre de types de messages (voir la documentation du produit pour plus d'informations sur cette rubrique).

  • Messagerie électronique internationalisée

    Lorsqu'un message de l'un de ces types est créé dans HCL Commerce, le service de composition de message utilise le modèle correspondant pour créer le message sortant. Une fois créé, le message sortant peut être envoyé via tous les types de transport affectés au type de message dans la console d'administration.

Procédure

Pour illustrer le concept de modèle de composition JSP et les diverses capacités d'internationalisation du système de messagerie sortante, voici un exemple de bout en bout sur la façon d'implémenter une commande de messagerie par courrier électronique internationalisée :
  1. Initialisez com.ibm.commerce.messaging.commands.SendMsgCmd dans votre implémentation de commande afin de créer un message :
    
    com.ibm.commerce.messaging.commands.SendMsgCmd sendMsgCmd =
    (com.ibm.commerce.messaging.commands.SendMsgCmd)
    CommandFactory.createCommand(SendMsgCmd.NAME, getStoreId());
    

    La méthode getStoresJS crée un tableau JavaScript avec toutes les informations octroyées à l'utilisateur selon la stratégie de contrôle d'accès. Les informations incluent les magasins auxquels l'utilisateur a le droit d'accéder, les centres de distribution de ces magasins et les langues prises en charge par chacun des magasins. Voici un exemple de matrice JavaScript créée par un appel à la méthode getStoresJS :

  2. Récupérer l'objet traduit du message :
    
    Locale locale = getCommandContext().getLocale();
    ResourceBundle property = (ResourceBundle)
    ResourceBundle.getBundle("yourPropertyFile", locale);
    String subject = property.getString("SUBJECT_CONTENT");
    
  3. Passez dans la ligne d'objet traduite avec la méthode setConfigData définie dans SendMsgCmd :
    
    sendMsgCmd.setConfigData("subject", subject);
    
  4. Récupérer le contenu traduit du message :
    
    // assume you are using storeId 1
    sendMsgCmd.setStoreID(new Integer(1));
    // the default Message Type ID for Password Reset Notification view
    name is "PasswordNotify" (that is MSGTYPES.NAME).
    sendMsgcmd.setMsgType("PasswordNofity");
    // pass the viewName, commandContext and TypedProperty to compose
    the
    message
    // the default MSGTYPES.VIEWNAME of Password Reset Notification is
    PasswordNotifyView. If null is specified, the default view name
    will be used. A different view name can be specified.
    sendMsgCmd.compose("PasswordNotifyView", getCommandContext(),
    typedProperty);
    
  5. Créez l'affichage JSP de votre commande comme suit :
    1. Récupérer la localité comme indiqué dans les éléments suivants :
      
      ...
      <c:set var="localeOwn" value="${CommandContext.locale}"/>
      ...
      <html>
      ...
      ...
      <param name="LOCALE" value="${localeOwn}"/>
      ...
      ...
      </html>
      
      
    2. Récupérer le fichier de propriétés correspondant et obtenir le texte traduit pour générer le contenu du message :
      
      ...
      <c:set var="locale" value="${CommandContext.locale}"/>
      ...
      <fmt:setLocale value="${CommandContext.locale}" />
      <fmt:setBundle basename="${path}PasswordResetNotification"
      var="bnResourceBundle" />
      ...
      ...
      <title><fmt:message key="eMarketingSpot_UpSellCrossSell"
      bundle="${bnResourceBundle}"/></title>
      
      

Résultats

La commande JSP associée à votre affichage génère le message internationalisé à livrer dans la file d'attente de messagerie sortante (stockée temporairement dans la table MSGSTORE).

Le tableau suivant montre des exemples de types de messages qui utilisent des modèles de composition de message. Vous pouvez utiliser ces modèles et leurs commandes associées comme référence lors de la création de vos propres commandes de messagerie et modèles de composition.

Type de message Modèle JSP Chemin d'accès
OrderCreateXMLFormat OrderCreateXML.jsp workspace_dir\Stores\Web Content
OrderStatusNotify OrderStatusNotify.jsp workspace_dir\Stores\Web Content
PasswordReset PasswordResetNotification .jsp workspace_dir\Stores\Web Content
  • Le nom par défaut d'un modèle JSP est enregistré dans le fichier de le fichier struts-config.xml pour HCL Commerce version 9.0.0.x. Pour la version 9.0.x, il est enregistré dans le fichier struts-wcs-stores.xml. Les entrées nouvellement personnalisées doivent être ajoutées aux fichiers struts-config-ext.xml de Stores.war pour la version 9.0.0.x, et struts-wcs-stores-custom.xml de Stores.war pour la version 9.0.x. De par sa conception, le système de messagerie entrante dans HCL Commerce produit tous les messages (pour les transports tels que le fichier et le MQ) au format UTF-8. Cela permet des communications faciles, puisque l'UTF-8 est devenu le codage standard de caractère de communication ordinateur-ordinateur.
  • HCL Commerce prend en charge uniquement l'encodage UTF-8 pour la composition des messages. Si vous rencontrez des problèmes concernant des caractères spéciaux qui ne s'affichent pas correctement en raison de problèmes d'encodage, voir .