Ronaldo Possan
39 posts
|
A utilização de um servidor apenas para serviços de e-mail pode se tornar inviável. Então, assim como eu precisei num projeto, a utilização de um servidor externo (no caso, o Gmail) pode ser um prato cheio ! Pelo fato de não depender de um servidor interno e também pela estabilidade que o google nos fornece. A única desvantagem que encontrei até o momento, foi da lentidão de conexão ao Gmail, pois há uma enorme diferença entre um servidor interno. Tmbém não estudei a segurança de utilizar este serviço …
Bom, segue abaixo como implementar a conexão:
Simples !
Primeiramente hospedei no code do google, lá têm inclusive a GEM criada para a lib SMTP_TLS: http://code.google.com/p/smtptls/
Mas segue abaixo um tutorial passo-a-passo de como fazê-la:
1) Crie um arquivo chamado “smtp_tsl.tb” contendo o código abaixo e salve-o no diretório /lib de sua aplicação:
Net::SMTP.class_eval do
private
def do_start(helodomain, user, secret, authtype)
raise IOError, ‘SMTP session already started’ if started
check_auth_args user, secret, authtype if user or secret
sock = timeout(open_timeout) { TCPSocket.open(address, @port) }
@socket = Net::InternetMessageIO.new(sock)
@socket.read_timeout = 60 #read_timeout
check_response(critical { recv_response() })
do_helo(helodomain)
if starttls
raise ‘openssl library not installed’ unless defined?(OpenSSL)
ssl = OpenSSL::SSL::SSLSocket.new(sock)
ssl.sync_close = true
ssl.connect
socket = Net::InternetMessageIO.new(ssl)
@socket.read_timeout = 60 #read_timeout
do_helo(helodomain)
end
authenticate user, secret, authtype if user
@started = true
ensure
unless @started
# authentication failed, cancel connection.
@socket.close if not @started and @socket and not @socket.closed?
@socket = nil
end
end
def do_helo(helodomain)
begin
if @esmtp
ehlo helodomain
else
helo helodomain
end
rescue Net::ProtocolError
if @esmtp
@esmtp = false
@error_occured = false
retry
end
raise
end
end
def starttls
getok(’STARTTLS’) rescue return false
return true
end
def quit
begin
getok(’QUIT’)
rescue EOFError
end
end
end
########################################################
2) Em seguida configure o config/environment.rb da sua aplicação da seguinte forma:
3) Em seguida, tulize a ActionMailer normalmente. Feito !
Fonte: http://www.prestonlee.com/archives/63
Agradeço pelas opiniões, alterações, melhorias, críticas … !!!
Um abraço à comunidade !
|