Codificación para la transmisión de correo electrónico

En las transmisiones de correo electrónico en las que se debe codificar el contenido, los diferentes mandatos de mensajería seleccionan la codificación basándose en la jerarquía siguiente:

Por qué y cuándo se efectúa esta tarea

  • Si el member_ID se especifica
  • Si el member_ID no se especifica

El mandato de tarea de mensajería de salida (SendMsgCmd) utiliza el objeto del sistema de mensajería (Messaging) para crear y enviar mensajes. La jerarquía de selección de codificación depende de si el mandato de tarea de mensajería especifica o no un ID_miembro (CmdSendMsg.addMember(getUserID).

  • Si se especifica member_ID
    Determine la codificación correcta:
    • Utilice el idioma preferido del usuario para determinar la codificación correcta. UserAccessBean.getPreferredLanguageId recupera la columna LANGUAGE_ID de la tabla USERS que proporciona el idioma preferido del usuario.
    • Si el usuario no tiene un idioma favorito, utilice el idioma predeterminado de la tienda para determinar la codificación adecuada. StoreAccessBean.getLanguageId recupera la columna LANGUAGE_ID de la tabla STORE, que proporciona el idioma predeterminado de la tienda. A continuación se muestra un ejemplo de cómo hacerlo:
      
      ...
      <c:set var="preferredLanguage"
      value="${WCParam.usr_preferredLanguage}"/>
      <c:if test="${empty preferredLanguage}">
      <c:set var="preferredLanguage"
      value="${CommandContext.languageId}"/>
      </c:if> 
      ...
      
  • Si no se especifica el member_ID

    Utilice el idioma predeterminado del sitio. El objeto del sistema de mensajería (Messaging) establece el idioma preferido en "DefaultLang" que se sustituye por el idioma predeterminado del sitio mediante el código del adaptador de correo electrónico.

    El sistema de mensajería de salida utiliza las plantillas de composición de páginas JavaServer para diferentes tipos de mensajes (vea la documentación del producto para obtener más información acerca de este tema).

  • Mensajes de correo electrónico habilitados para la globalización

    Cuando se genera un mensaje de uno de estos tipos en HCL Commerce, el servicio de composición de mensajes utiliza la plantilla correspondiente para crear el mensaje de salida. Una vez creado, el mensaje de salida se puede enviar mediante los transportes que se hayan asignado al tipo de mensaje en la Consola de administración.

Procedimiento

Para ilustrar el concepto de la plantilla de composición JSP y las diferentes posibilidades de globalización del sistema de mensajería de salida, el siguiente es un ejemplo de extremo a extremo acerca de cómo se implementa un mandato de mensajería de correo electrónico habilitado para la globalización:
  1. Inicialice com.ibm.commerce.messaging.commands.SendMsgCmd en la implementación de mandatos para crear un mensaje:
    
    com.ibm.commerce.messaging.commands.SendMsgCmd sendMsgCmd =
    (com.ibm.commerce.messaging.commands.SendMsgCmd)
    CommandFactory.createCommand(SendMsgCmd.NAME, getStoreId());
    

    El método getStoresJS crea una matriz de JavaScript con toda la información a la que tiene acceso el usuario según la política de control de acceso. La información incluye las tiendas a las que el usuario tiene acceso, los centros de despacho de pedido de estas tiendas y los idiomas que soporta cada una de las tiendas. El siguiente es un ejemplo de una matriz de JavaScript que se ha creado llamando al método getStoresJS:

  2. Recupera el asunto traducido del mensaje:
    
    Locale locale = getCommandContext().getLocale();
    ResourceBundle property = (ResourceBundle)
    ResourceBundle.getBundle("yourPropertyFile", locale);
    String subject = property.getString("SUBJECT_CONTENT");
    
  3. Pase la línea de asunto traducida en el método setConfigData definido en SendMsgCmd:
    
    sendMsgCmd.setConfigData("subject", subject);
    
  4. Recupera el contenido traducido del mensaje:
    
    // 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. Cree el JSP de vista de su mandato como se indica a continuación:
    1. Recupere el entorno local como se muestra a continuación:
      
      ...
      <c:set var="localeOwn" value="${CommandContext.locale}"/>
      ...
      <html>
      ...
      ...
      <param name="LOCALE" value="${localeOwn}"/>
      ...
      ...
      </html>
      
      
    2. Recuperar el archivo de propiedades correspondiente y obtener el texto traducido para generar el contenido del mensaje:
      
      ...
      <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>
      
      

Resultados

El JSP asociado al mandato de vista genera el mensaje habilitado para la globalización que se enviará a la cola de mensajes de salida, (almacenado temporalmente en la tabla MSGSTORE).

La tabla siguiente muestra los ejemplos de los tipos de mensajes que utilizan las plantillas de composición de mensajes. Puede utilizar estas plantillas y sus mandatos asociados como referencia cuando cree sus propios mandatos de mensajería y plantillas de composición.

Tipo de mensaje Plantilla JSP Vía de acceso
OrderCreateXMLFormat OrderCreateXML.jsp workspace_dir\Stores\Web Content
OrderStatusNotify OrderStatusNotify.jsp workspace_dir\Stores\Web Content
PasswordReset PasswordResetNotification .jsp workspace_dir\Stores\Web Content
  • El nombre predeterminado de una plantilla JSP está registrado en el archivo struts-config.xml para HCL Commerce Versión 9.0.0.x. Para la versión 9.0.x, se registra en el archivo struts-wcs-stores.xml . Las entradas recién personalizadas deben añadirse al archivo struts-config-ext.xml de Stores.war para 9.0.0.x y struts-wcs-stores-custom.xml de Stores.War para 9.0.x. El sistema de mensajería de entrada de HCL Commerce está diseñado para que todos los mensajes de salida (para transportes como archivos y MQ) tengan el formato UTF-8. Esto es así para facilitar las comunicaciones ya que UTF-8 se ha convertido en la codificación de caracteres de comunicaciones de sistema a sistema.
  • HCL Commerce solo soporta la codificación UTF-8 para la composición de mensaje. Si se encuentra algún problema relacionado con caracteres especiales que no se muestran correctamente debido a problemas de codificación, consulte .