[Resolvido] Configurar envio de e-mail no i-Diário

Bom dia! Gostaria de saber como configurar o i-Diário (modo produção) para enviar e-mails pelo gmail. Pois, sempre que é feito o cadastro de um novo usuário e ativado pelo administrador, o Sidekiq contabiliza tentativas e erros de notificação (ArgumentError: SMTP From address may not be blank: nil). Portanto, os novos usuários do i-Diário não recebem e-mail confirmando sua ativação e o reenvio de senhas também não funciona. Abaixo, segue os dados do config/secrets.yml.

production:
secret_key_base: minha_chave_secreta
SMTP_ADDRESS: smtp.gmail.com
SMTP_PORT: 587
SMTP_DOMAIN: gmail.com
SMTP_USER_NAME: meu_email@gmail.com
SMTP_PASSWORD: minha_senha_do_gmail
NO_REPLY_ADDRESS: NO_REPLY_ADDRESS
EMAIL_SKIP_DOMAINS: EMAIL_SKIP_DOMAINS
STUDENT_DOMAIN: STUDENT_DOMAIN

Não sei se o secrets.yml está correto, mas foi o que tentei até agora.

Olá @gilcimartec, acredito que pelo fato de estar tentando utilizar o gmail para tal, a porta que deva utilizar não seja a 587 a não ser que tenha configurado o gmail para aceitar aplicativos menos seguros.

Se for o seu caso, de ter habilitado o gmail para aplicativos menos seguros, acredito que deva utilizar a porta 25, não tenho certeza, porém, você pode pesquisar a respeito no google, direcionando as buscas para a parte de SMTP com tls.

1 curtida

Olá @moliveirasoares ! Obrigado pela resposta. Esqueci de mencionar, mas eu já tinha configurado o gmail para aceitar aplicativos menos seguro. No i-Educar, utilizando essa mesma configuração SMTP, com a porta 587, funcionou muito bem o envio de emails pelo gmail, porém no i-Diário não deu certo. Você ou outro membro da comunidade teria alguma sugestão de configuração? Desde já eu agradeço.

1 curtida

Olá @edersoares ! Para o i-Diário enviar e-mail é só digitar os dados no secrets.yml ou tem mais alguma coisa? Esqueci algum sinal caractere como aspas ou outro, antes e após algum dado digitado ou não é necessário nenhum? Se @tiago.camargo @moliveirasoares também poder ajudar nessa dica eu agradeço muito.

Você precisa configurar no config/secrets.yml:

SMTP_ADDRESS: smtp.seuservidor.com
SMTP_PORT: 2525
SMTP_DOMAIN: seudominio.com
SMTP_USER_NAME: XXX
SMTP_PASSWORD: XXX

Ola @edersoares ! Obrigado pela resposta. Mas tenho outra dúvida. O i-Diário só funciona na porta 25 ou 2525?

Olá @gilcimartec, avaliando o problema e simulando no meu ambiente, será necessário fazer os seguintes ajustes.

No arquivo: config/initializers/setup_mail.rb

Adicionar a linha abaixo após a linha da senha.

openssl_verify_mode: Rails.application.secrets.SMTP_OPENSSL_VERIFY_MODE

Obs.: Lembrar de colocar a vírgula após a linha da senha, ficando conforme abaixo:

    password: Rails.application.secrets.SMTP_PASSWORD,
    openssl_verify_mode: Rails.application.secrets.SMTP_OPENSSL_VERIFY_MODE

No arquivo: config/secrets.yml

Adicionar a variável
SMTP_OPENSSL_VERIFY_MODE: none

Se não fizer, receberá o erro abaixo:

OpenSSL::SSL::SSLError (hostname "Valor informado na variável SMTP_ADDRESS" does not match the server certificate)

Dessa forma, você ainda estará usando criptografia, mas a validação do certificado será desabilitada (e você não receberá nenhum erro).

No meu caso, ficou da seguinte forma:

Arquivo: config/initializers/setup_mail.rb

if Rails.env.production? || Rails.env.staging?
  ActionMailer::Base.delivery_method = :smtp

  ActionMailer::Base.smtp_settings = {
    enable_starttls_auto: true,
    address: Rails.application.secrets.SMTP_ADDRESS,
    port: Rails.application.secrets.SMTP_PORT,
    domain: Rails.application.secrets.SMTP_DOMAIN,
    authentication: 'plain',
    user_name: Rails.application.secrets.SMTP_USER_NAME,
    password: Rails.application.secrets.SMTP_PASSWORD,
    openssl_verify_mode: Rails.application.secrets.SMTP_OPENSSL_VERIFY_MODE,
  }

  ActionMailer::Base.default from: "Notificação i-Diário <#{Rails.application.secrets.NO_REPLY_ADDRESS}>"
end

Arquivo: config/secrets.yml
SMTP_ADDRESS: mail.meudominio.com.br
SMTP_PORT: 587
SMTP_DOMAIN: meudominio.com.br
SMTP_USER_NAME: noreply@meudominio.com.br
SMTP_PASSWORD: minha_senha
SMTP_OPENSSL_VERIFY_MODE: none
NO_REPLY_ADDRESS: noreply@meudominio.com.br

Obs.: A variável NO_REPLY_ADDRESS precisa ser preenchida e a variável SMTP_PASSWORD recomendo utilizar uma senha que não tenha caracteres especiais.

Não sei se é a melhor forma de se fazer nem se é a correta, no entanto, o resultado foi um sucesso para o envio do e-mail.

image

image

5 curtidas

Fala @moliveirasoares ! Muito obrigado pela ajuda!! Funcionou super bem no gmail. :clap: :clap: :clap:
Parabéns pelo excelente trabalho aqui no fórum. Tenho certeza que sua dedicação está ajudando outras pessoas também!
:handshake:

3 curtidas

Rapaz! fiz essa configuração, mas quando informo o email e clico no botão repuperar senha apresenta uma página de erro 500. Alguém pode me ajudar?