All for Joomla All for Webmasters
Ruby On Rails

Validando formato de e-mail no Rails: Regex e Gems

 

Dentre as validações de dados fornecidos pelo usuário, é comum precisarmos validar formato de e-mails em formulários. Validar que a entrada corresponde ao padrão esperado é importante para evitar exceções por endereço inválido, aumentar as taxas de entrega, construir a reputação do remetente e melhorar as taxas de conversão. Felizmente, Ruby on Rails fornece várias técnicas para validar e-mails e melhorar sua capacidade de entrega. O método que você escolher dependerá de suas preferências e facilidades. Neste artigo, vamos explorar diferentes métodos para realizar a validação de e-mail no Rails.

 

Validando formato de e-mail no Rails: Regex e Gems

Geralmente, um endereço de e-mail válido pode ser dividido em 3 partes:

  • nome identificador do usuário
  • o símbolo “at” (@)
  • o domínio

Se esse formato não for aderido, o endereço de email se torna inválido. As definições formais do formato estão contidas nos documentos RFC 5322 e RFC 5321.

Na maioria dos casos, o nome identificador do usuário pode utilizar qualquer um dos caracteres ASCII padrões:

  • dígitos — 0 a 9
  • letras minúsculas e maiúsculas — a a z e A a Z
  • caracteres imprimíveis — !#$%&’*+-/=?^_`{|}~
  • ponto — . (deve ser usado no meio da cadeia de caracteres, e não como inicial ou final)

Além disso, o domínio pode utilizar os caracteres abaixo:

  • dígitos — 0 a 9
  • letras minúsculas e maiúsculas — a a z e A a Z
  • hífen ou ponto — – / . (também não podem ser caracteres iniciais ou finais)

 

Técnicas de Validação de E-mail no Rails

Como mencionado anteriormente, há muitas técnicas para validar os endereços em Ruby on Rails. Neste artigo, vamos explorar quatro:

  • Regex (expressões regulares)
  • Validação do Active Record
  • Gem Email_validator
  • Gem Truemail

Regex

Uma expressão regular, geralmente abreviada para regex, refere-se a uma sequência de caracteres que permite definir padrões para correspondência, localização e gerenciamento de textos. Você pode usar regex para verificar se o formato do endereço de e-mail fornecido é válido ou não. Você pode criar qualquer tipo de regex para validar formatos de e-mail. Por exemplo, aqui está um padrão regex simples que verifica se um endereço de e-mail tem o símbolo ‘@’. Neste caso, as demais condições para um endereço de email válido não serão consideradas.

Vamos ver como pode ser implementado em código Ruby:

Como você pode ver no código acima, criamos uma função que usa o padrão regex para determinar se o endereço de e-mail fornecido é válido. Se o código for executado, ele produzirá um email válido, indicando que o endereço de email fornecido está na sintaxe adequada. A seguir, vamos melhorar o padrão regex adicionando algumas limitações a serem aplicadas às seções local e de domínio.

Estas são as restrições que queremos aplicar:

  • A-Z é permitido
  • a-z é permitido
  • 0-9 é permitido
  • Underscore(_), hífen(-), e ponto(.) são permitidos
  • Quaisquer outros caracteres não são permitidos

A expressão regular fica assim:

O código em Ruby fica assim:

Se o código acima for executado, resultará em E-mail inválido, indicando que o endereço de email fornecido não está na sintaxe necessária. Por último, vamos melhorar o padrão regex adicionando uma limitação à seção de nome de domínio.

Estas são as restrições que queremos aplicar:

  • O nome do domínio deve conter pelo menos um ponto(.)
  • A parte do domínio após o último ponto deve conter apenas letras
  • A parte do domínio que indica o tipo (como .com ou .org) deve conter pelo menos 2 a 6 caracteres

A expressão regular atualizada:

O código em Ruby:

Validações no Active Record

Uma grande facilidade do Ruby on Rails é que ele fornece auxiliares de validação do Active Record que permitem a você validar o estado dos objetos antes de serem processados. Você pode usá-los para criar seus próprios métodos de validação de e-mail e exibir mensagens de erro aos usuários. Por exemplo, você pode usar o format helper para verificar se um endereço de e-mail corresponde ao padrão regex fornecido, que é definido usando a opção: with .

Vamos ver como você pode adicionar o auxiliar ao seu model:

Como você pode ver no código acima, se o Active Record realizou a validação, e o endereço de e-mail é inválido, a mensagem de erro especificada usando a opção message  será exibida para o usuário. Observe que especificamos o padrão regex usado anteriormente neste artigo. Além disso, adicionamos os auxiliares uniqueness e length para confirmar a exclusividade e o comprimento do endereço de e-mail fornecido, respectivamente.

Email_validator gem

Há muitas gems Ruby disponíveis para auxiliar nessa validação. Por exemplo, uma de simples utilização é a email_validator. Para utilizá-la, adicione-a ao seu Gemfile:

Depois, execute o Bundler para fazer a instalação:

Então você pode adicioná-la ao seu atributo no model:

Simples assim! Essa gem fornece uma técnica de validação de e-mail simples, verificando se há um sinal de arroba (@) com alguns caracteres antes ou depois dele. Se o sinal estiver presente, ele retorna, verdadeiro; caso contrário, retorna falso. Fornecer essa validação de e-mail simples evita o risco de rejeitar um endereço de e-mail que pode parecer ter caracteres estranhos, mas na verdade é válido. Ele também evita o aborrecimento de procurar o padrão regex perfeito para validar endereços de e-mail.

Truemail gem

Truemail é outra gem que você pode usar para validar endereços de e-mail. Ele fornece mais recursos de validação do que a gem email_validator . Com a gem Truemail Ruby, você pode verificar a validade de um endereço de e-mail via regex, SMTP ou DNS. Mostraremos como usá-la para verificar e-mails por meio de um padrão regex.

Para começar a usar esta gema, adicione-a ao seu Gemfile:


Em seguida execute o Bundler:

Você também precisará configurá-la de acordo com as instruções da documentação. Aqui um exemplo de como você pode fazer a validação com regex:

Você também pode usar o método  .valid? que é um atalho para o método  validate . O helper retorna um boolean, em vez do objeto de validação. Exemplo:

Observe que o Truemail vem com um padrão regex padrão para validar endereços de e-mail. Portanto, você pode fornecer sua própria regex para substituir seu padrão.

 

Concluindo

Sendo uma demanda de uso comum, existem muitas opções de como implementar essa validação. Tenha em mente que a validação do formato não valida que o endereço recebedor existe (até mesmo por questões de falha de digitação e afins). Para isso, a utlização de confirmação do usuário via recebimento de email em sua caixa de entrada é uma forma de garantir a validade desses recebedores e que os emails disparados com destino aos mesmos tenham uma boa taxa de conversão, evitando que você caia em blacklists.

Quaisquer dúvidas ou sugestões, utilize a área de comentários ou entre em contato!

 

Você Também Pode Gostar

Nenhum Comentário

Deixe uma Resposta