A primeira vez que trabalhei com o ActionMailer estava utilizando configurações do Google Apps, e me bati um pouco até chegar ao plugin ActionMailerTLS. Posso dizer que me senti aliviado quando tudo estava funcionando após instalar o plugin.

Depois dessa primeira experiência utilizei o plugin mais algumas vezes, e se bem me lembro a última vez foi final do ano passado, 2008. Bom, hoje me deparei com uma tarefa em um projeto que estou desenvolvendo que em resumo dizia o seguinte: disparar e-mail para os usuários envolvidos na transação a cada atualização de status. Legal, nada muito complicado, a primeira coisa que me passou pela cabeça foi procurar o plugin no github. Chegando lá a primeira coisa que vejo:

This gem will only work on Ruby 1.8.6. If you’re on Ruby 1.8.7 and Rails >= 2.2.1, you don’t need this gem.

Esta gem funcionará apenas no Ruby 1.8.6. Se você está usando o Ruby 1.8.7 e o Rails >= 2.2.1, você não precisa dela.

Ótimo. Fui logo ler as notas mais abaixo no Readme. Em resumo, o Ruby 1.8.7 possui o suporte necessário as configurações TLS para funcionar com o Gmail (informação que eu desconhecia até então), funcionalidades estas que o plugin adicionava em versões anteriores. E o Rails a partir da versão 2.2.1 adicionou uma opção para ativar essa funcionalidade. Basta adicionar à sua configuração do ActionMailer a seguinte linha: :enable_starttls_auto => true. Veja abaixo como ficaria:

ActionMailer::Base.smtp_settings = {
 :address => "smtp.gmail.com",
 :port => 587,
 :authentication => :plain,
 :enable_starttls_auto => true,
 :domain => 'my_domain',
 :user_name => "my_username",
 :password => "my_password"  
}

Com essa modificação o Mailer já está funcionando perfeitamente com o Gmail.

Os commits relacionados estão aqui e aqui, e o ticket no lighthouse aqui.