No se puede integrar con SendGrid

Hola,

Estoy intentando usar el servicio de correo electrónico de SendGrid y sigo recibiendo este error en los registros:

Excepción del trabajo: 535 Autenticación fallida: nombre de usuario o contraseña incorrectos

No estoy seguro de qué estoy haciendo mal. Así es como se ve mi configuración:

 DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
 DISCOURSE_SMTP_PORT: 587
 DISCOURSE_SMTP_USER_NAME: apiKey
 DISCOURSE_SMTP_PASSWORD: 'SG.xxxx.xxxxxx.xxxx'

También intenté usar el puerto 2525 siguiendo la sugerencia de Fresh install. Works. Sendgrid not sending emails - #5 by Ham, pero tampoco funcionó.

Puedo establecer una conexión usando telnet.

¿Alguien puede ayudarme? ¿Tienen alguna idea de qué podría estar haciendo mal?

¿Desde el mismo servidor donde está alojado tu Discourse?

Perdona si es una pregunta tonta, pero ¿el nombre de usuario de tu SendGrid es realmente apiKey?

:thinking:

Solo pregunto porque es una elección inusual para un nombre de cuenta…

No, creo que en SendGrid no existe el concepto de nombre de usuario; simplemente seguí la documentación aquí discourse/docs/INSTALL-email.md at main · discourse/discourse · GitHub

También podría estar equivocado, pero no veo ninguna información de nombre de usuario en mi cuenta de SendGrid.

Utilizan una terminología diferente, pero aún te estás conectando a lo que es esencialmente un servidor SMTP estándar, el cual requerirá autenticación.

Ve a la sección Teammates (Compañeros) - https://app.sendgrid.com/settings/teammates

Allí verás los detalles de la cuenta que pueden enviar correos electrónicos:

El valor en la columna “Username” (Nombre de usuario) es lo que debes ingresar en la configuración de Discourse DISCOURSE_SMTP_USER_NAME.

Así que, si el “Username” era SK2019, tendrías algo como:

DISCOURSE_SMTP_ADDRESS: smtp.sendgrid.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: SK2019
DISCOURSE_SMTP_PASSWORD: 'xxxx.xxxxxx.xxxx'

Lo intenté pero no funcionó. La documentación de SendGrid indica usar apiKey como nombre de usuario, pero eso no parece estar funcionando.

Quizás debería contactar al equipo de SendGrid y pedirles ayuda.

¿Usaste apiKey al usar telnet?

¡Sí, seguí las instrucciones en How to send an Email with SMTP | SendGrid Docs | Twilio y funcionaron! No estoy seguro de qué me falta en la configuración de Discourse.

¿Las cuatro líneas de tu archivo de configuración se parecen a las mías (arriba)?

¿Con el DISCOURSE_SMTP_USER_NAME correcto que coincida con el que se muestra en tu página de Equipos en SendGrid?

Sí, el nombre de usuario es el que se muestra en la página de Teammates, la contraseña es la clave que generé (telnet funciona con esta clave) y los otros dos campos son exactamente iguales.

¿Podrías decirme qué versión de Discourse estás usando? Yo estoy usando la versión beta; sospecho que eso podría ser el problema.

De todos modos, planeo cambiar a Mailgun. Lo probé hoy y funciona perfectamente (aunque es caro, pero no tengo otras opciones por el momento).

Por si acaso, @Satwik_Kansal, nuestro nombre de usuario de la API de Sendgrid es “apikey”, no “apiKey”. Funciona perfectamente.

Tengo el mismo problema. ¿Cuál es el resumen? ¿Usar “apikey” (no funciona) o añadir un compañero de equipo (está vacío)?

Para que quede constancia, la documentación hace esto bastante confuso y no es la primera vez que me veo buscando esta misma cuestión en Google intentando encontrar la solución.

Actualmente, la documentación indica:

SendGrid — 40k correos electrónicos en una prueba de 30 días

Dirección del servidor SMTP? smtp.sendgrid.net
Nombre de usuario SMTP?      apikey
Contraseña SMTP?       [Clave API de SendGrid]

EDITO: Lo que creo que confunde a la gente es que ellos (como yo) piensan que “apikey” significa que deben poner su clave API aquí, pero en realidad ¡debe dejarse tal cual!

¿Loco, verdad?

Imagino que esto ha confundido al 99 % de las personas que lo intentan :confused:

(yo mismo incluido en ese momento)