He comenzado a usar el webhook de SendGrid con clave de verificación. Ahora estoy recibiendo muchos de estos errores. Envié una invitación masiva con SendGrid.
No estoy seguro de si son rebotes, ¿cómo podríamos comprobarlo? Es muy probable que sea alrededor del momento en que hicimos una invitación masiva a usuarios que no son de Discourse.
Es posible que esté sucediendo algo con la carga útil del evento que se recibe de Sendgrid. Parece que el status no se está estableciendo en los eventos bounce como se esperaba.
Suponiendo que obtuviste el backtrace de logster en <TU_SITIO>/logs, la pestaña de entorno debería tener los detalles de la solicitud. ¿Podrías proporcionar una copia saneada de la carga útil de allí?
Lo siento, debería haber sido más específico. El cuerpo de la solicitud tiene las pistas necesarias. Deberías poder encontrar esto después de la fila time. Es posible que tengas que desplazarte hacia arriba o expandir el panel para verlo.
Sí, es extraño. ¿Podrías recuperar la carga útil del panel de SendGrid en su lugar?
Según la última documentación de webhooks de SendGrid, el punto de conexión actual en Discourse debería funcionar sin problemas, pero el error apunta a un problema con la carga útil de la solicitud, por lo que una muestra sería genial.
¿Alguna vez resolviste este problema? Tengo el mismo error, en la misma línea de código:
No estoy familiarizado con Ruby, pero parece que puede analizar el JSON sin problemas hasta que intenta analizar el código de error, Email::SMTP_STATUS_TRANSIENT_FAILURE apunta a:
Comprobé en Webhook.site lo que Sendgrid realmente envía cuando pruebo el webhook y se ve así para un rebote:
Aha… respondiendo a mi propia pregunta, el botón “Probar integración” de Webhook te miente…
Aquí está la carga útil real si realmente envío un correo electrónico a una dirección de correo electrónico inexistente:
[
{
"bounce_classification": "Unclassified",
"email": "noemail@this.does.not.exist.tld",
"event": "bounce",
"reason": "unable to get mx info: failed to get IPs from PTR record: lookup <nil>: unrecognized address",
"sg_event_id": "Ym91bmNlLTQtNTA0ODUxOTUtZXVvMmlLeGRTYXlQRjRZRTQtLUk3QS0w",
"sg_message_id": "euo2iKxdSayPF4YE4--I7A.recvd-5f54b5d587-pczjm-1-67BADEEA-6.0",
"smtp-id": "<870b3a2a-160c-4fc8-bc9a-bd0d5b943b81@forum.umbraco.com>",
"timestamp": 1740300320,
"tls": 0,
"type": "blocked"
}
]
Y ahí lo tenemos: no hay campo status.
Esto es cuando uso a propósito un dominio que no existe, siento que esto debería manejarse, tal vez \"type\": \"blocked\" pueda ser el indicador que Discourse busca.
Como un intento diferente, puse algo sin sentido delante de outlook.com y eso sí me da una carga útil funcional:
Fantástico, eso fue muy útil. No habría podido hacer todo eso por mi cuenta
Gracias, he actualizado y una prueba manual ahora hace las cosas correctamente, el registro de errores está limpio y puedo ver que el correo rebotó en el registro de correo