Sendgrid-nodejs: El envío de la plantilla transaccional descarta el sujeto especificado a través del objeto de datos

Creado en 31 oct. 2018  ·  19Comentarios  ·  Fuente: sendgrid/sendgrid-nodejs

Resumen de asuntos

Cuando se usa la función sendgridMail.send para enviar una plantilla transaccional, cualquier línea de asunto agregada al objeto data que se pasa sendgridMail.send (a través de data.subject o data.personalizations[someIndex].subject ) se descarta y se utiliza la línea de asunto que se especifica en la plantilla transaccional real.

El comportamiento que espero es que los campos especificados en el objeto data anulen cualquier campo de plantilla existente, pero este no parece ser el caso. En cuanto a la documentación de la API de envío de correo v3, la descripción del campo template_id indica:

La identificación de una plantilla que le gustaría usar. Si usa una plantilla que contiene un asunto y contenido (ya sea texto o html), no necesita especificarlos en el nivel de personalización ni de mensaje.

Para mí, "no es necesario especificarlos en el nivel de personalizaciones ni en el mensaje" implica que puede anular el asunto de la plantilla. Si ese no es el caso, la descripción debe cambiarse a "no se pueden especificar a nivel de personalizaciones ni de mensaje".

Ejemplo

  • Creé una plantilla transaccional con el asunto "Asunto de mi correo electrónico"
  • Intenté enviar un correo electrónico usando sendgridMail.send donde especifiqué data.subject como "[TEST] Mi asunto de correo electrónico".
  • El correo electrónico que recibí tenía la línea de asunto "Asunto de mi correo electrónico"

Pasos para reproducir

  1. Cree una plantilla transaccional en https://sendgrid.com que tenga un asunto especificado
  2. Utilice la función sendgridMail.send para enviar la plantilla. También asegúrese de especificar data.subject o data.personalizations[someIndex].subject .
  3. Confirme que el correo electrónico se recibe con la línea de asunto original, no la que se pasó a la API

Detalles técnicos:

  • sendgrid-nodejs Versión: 6.3.1
  • Versión de Node.js: v8.11.3
non-library issue

Comentario más útil

Doh! Encontré dónde se debe establecer el {{sujeto}}. En caso de que alguien más tenga este problema, acceda a editar su plantilla, luego haga clic en "Configuración" a la izquierda. Habrá un espacio para ingresar su Asunto. Ingrese {{asunto}} aquí.

Todos 19 comentarios

Hola @ 10kc-zack,

Creo que en la plantilla transaccional establecería el asunto en {{subject}}, luego en su código establecería data.subject en "[TEST] My Email Subject" .

Eso funciona para ti?

Con los mejores deseos,

Elmer

¡Gracias por la respuesta @thinkingserious y tu sugerencia!

Si bien esto hace el trabajo (y es la solución alternativa que estamos usando actualmente), preferiría poder establecer el tema como parte de nuestro cuerpo de llamada API. ¿Puede confirmar que, de hecho, el asunto proporcionado a la API se descarta y que esa información falta en la documentación de la API?

Hola @ 10kc-zack,

Creo que en la plantilla transaccional establecería el asunto en {{subject}}, luego en su código establecería data.subject en "[TEST] My Email Subject" .

Eso funciona para ti?

Con los mejores deseos,

Elmer

Como dijo @ 10kc-zack, esta solución funciona, pero también he notado que la plantilla está convirtiendo algunos caracteres como ' apostrofia ... es decir, "Alguien" en entidades html. Mi correo electrónico llega con el asunto Someone's

Tengo problemas para establecer la línea de asunto con los métodos del paquete SendMail Nuget. Aquí está mi código, que intenté actualizar usando la información anterior:

    public async Task SendAsyncTemplate(string FromAddress, string FromName, string ToAddress, string ToName, string Subject, string LinkText, string LinkUrl)
    {
        _logger.LogInformation($"Sending mail to: {ToAddress}, with subject: {Subject}");

        var apiKey = _sendGridOptions.SendGridAPI;
        var client = new SendGridClient(apiKey);

        var from = new EmailAddress(FromAddress, FromName);
        var to = new EmailAddress(ToAddress, ToName);
        var msg = new SendGridMessage();
        var templateData = new ExampleTemplateData
        {
            Subject = Subject,
            Name = ToName,
            LinkText = LinkText,
            LinkUrl = LinkUrl
        };
        msg.Subject = "{{subject}}";
        msg.SetFrom(from);
        msg.AddTo(to);
        msg.AddCc(from);
        msg.SetTemplateId("supersecret");
        msg.SetTemplateData(templateData);

        var response = await client.SendEmailAsync(msg);

        _logger.LogInformation($"SendGrid Response Status Code: {response.StatusCode}");
    }
    private class ExampleTemplateData
    {
        [JsonProperty("subject")]
        public string Subject { get; set; }

        [JsonProperty("name")]
        public string Name { get; set; }

        [JsonProperty("linkText")]
        public string LinkText { get; set; }
        [JsonProperty("linkUrl")]
        public string LinkUrl { get; set; }
    }

He ejecutado en modo de depuración y los valores se están configurando correctamente. Lo que obtengo como línea de asunto es un guión. ¿Algunas ideas?

Doh! Encontré dónde se debe establecer el {{sujeto}}. En caso de que alguien más tenga este problema, acceda a editar su plantilla, luego haga clic en "Configuración" a la izquierda. Habrá un espacio para ingresar su Asunto. Ingrese {{asunto}} aquí.

@smschick ,

En su caso, haría {{{ subject }}} .

@ 10kc-zack,

Tengo una solicitud abierta para realizar ese cambio en la documentación. Supongo que se refiere a esta documentación , ¿correcto?

Con los mejores deseos,

Elmer

@thinkingserious Esa es de hecho la documentación a la que me refería: +1:

¿Hay algún plan para poder establecer el asunto a través de la API sin usar dynamic_template_data ?

Sí, es bastante confuso que no pueda pasar el tema a través de personalizaciones cuando usa datos de plantilla dinámica, tiene que pasarlo en los datos que parece.

@ mou01 Aquí un ejemplo simple de cómo establecer el asunto: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/single-email-single-recipient.md

¿Funciona esto con plantillas dinámicas?

Creo que no, creo que la idea detrás de las plantillas dinámicas es que estableces el tema en la configuración de la plantilla y puedes usar datos dinámicos en el tema. La compensación es que debe pasarlos en datos dinámicos si desea que sea completamente flexible.

si alguien tiene este problema:
vaya a su plantilla y haga clic en "Configuración" con un icono de engranaje y colóquelo en el campo de asunto {{subject}}
y finalmente, al enviar su carga útil, " dynamic_template_data " debe tener el valor de asunto.
"dynamic_template_data":{ "subject": "My Subject Value here" }

Cerrar este problema a medida que cambian los documentos no es algo que se pueda solucionar en este repositorio. Envié una solicitud al equipo de documentación (título de referencia: _Actualizaciones para enviar por correo template_id description_) y volveré aquí con las actualizaciones.

Se actualizaron los documentos.

Gracias @ childish-sambino

El triple paréntesis sigue funcionando, ¿sigue siendo la solución oficial?
¡Gracias!

image

@tcukanoot Sí.

¿Fue útil esta página
0 / 5 - 0 calificaciones