Não é possível integrar com SendGrid

Olá,

Estou tentando usar o serviço de e-mail SendGrid e continuo recebendo este erro nos logs:

Exceção de trabalho: 535 Falha na autenticação: nome de usuário/senha inválidos

Não tenho certeza do que estou fazendo de errado. Veja como está minha configuração:

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

Também tentei usar a porta 2525, conforme sugerido em Fresh install. Works. Sendgrid not sending emails - #5 by Ham, mas isso também não funcionou.

Consegui estabelecer uma conexão usando o telnet.

Alguém pode ajudar? Alguma ideia do que eu possa estar fazendo de errado?

A partir do mesmo servidor onde seu Discourse está hospedado?

Desculpe se for uma pergunta boba, mas o nome de usuário do seu SendGrid é realmente apiKey?

:thinking:

Apenas pergunto porque é uma escolha incomum para um nome de conta…

Sim

Não, não acho que exista o conceito de nome de usuário no SendGrid. Apenas segui a documentação aqui discourse/docs/INSTALL-email.md at main · discourse/discourse · GitHub

Posso estar errado também, mas não vejo nenhuma informação sobre nome de usuário na minha conta do SendGrid.

Eles usam terminologia diferente, mas você ainda está se conectando ao que é essencialmente um servidor SMTP padrão, que exigirá autenticação.

Vá até a seção Teammates - https://app.sendgrid.com/settings/teammates

Lá você verá os detalhes da conta que podem enviar e-mails:

O valor na coluna “Username” é o que você precisa inserir na configuração do Discourse DISCOURSE_SMTP_USER_NAME.

Então, se o “Username” fosse SK2019, você teria algo assim:

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

Tentei isso, mas não funcionou. A documentação do Sendgrid menciona usar apiKey como nome de usuário, mas isso não parece estar funcionando.

Talvez eu deva entrar em contato com a equipe do Sendgrid e pedir ajuda.

Você usou apiKey ao usar telnet?

Sim, segui as instruções em How to send an Email with SMTP | SendGrid Docs | Twilio e funcionaram! Não tenho certeza do que estou perdendo na configuração do Discourse.

As quatro linhas no seu arquivo de configuração parecem com as minhas (acima)?

Com o DISCOURSE_SMTP_USER_NAME correto que corresponda ao exibido na sua página de colegas no SendGrid?

Sim, o nome de usuário é o exibido na página de Companheiros, a senha é a chave que gerei (o telnet funciona usando essa chave), e os outros dois campos são exatamente os mesmos.

Posso saber qual versão do Discourse você está usando? Estou usando a versão beta e suspeito que isso possa ser o problema.

De qualquer forma, estou planejando migrar para o Mailgun. Testei hoje e funciona perfeitamente (embora seja caro, mas não tenho outras opções no momento).

Apenas para constar @Satwik_Kansal, nosso nome de usuário da API do Sendgrid é “apikey” — não “apiKey”. Está funcionando perfeitamente.

Estou com o mesmo problema. Qual é o resumo aqui? Usar “apikey” (não está funcionando) ou adicionar um colega de equipe (está vazio)?

Para os registros, a documentação torna isso bastante confuso e não é a primeira vez que me vejo pesquisando exatamente esse problema no Google tentando encontrar a solução.

Atualmente, a documentação diz:

SendGrid — 40 mil e-mails em um período de teste de 30 dias

Endereço do servidor SMTP? smtp.sendgrid.net
Nome de usuário SMTP?      apikey
Senha SMTP?       [Chave de API do SendGrid]

EDIT: O que acho que está confundindo as pessoas é que elas (como eu) acham que “apikey” significa que devem colocar sua chave de API aqui, mas, na verdade, deve ser deixado como está!

Maluco, né?

Imagino que isso tenha confundido 99% das pessoas que estão tentando :confused:

(eu mesmo incluído na época)