Tras haber instalado el plugin que nos posibilitaba tener comentarios e incluso protegerlos debidamente; una utilidad bastante interesante es que se nos avise cuando alguien publique un comentario. Así podemos estar informados de lo que ocurra.
En mi caso quería utilizar mi dominio particular que utiliza Google Apps para ello. Recordé haber leido antes acerca de cómo hacerlo con gmail, en el blog de Jaime Iniesta utilizando: action_mailer_tls.
El problema al utilizar Google Apps, al igual que si utilizásemos Gmail es que utiliza el protocolo TLS, por eso no podemos utilizar el mailer normal de Rails, de ahí que tengamos que instalar este plugin.
Así que seguimos el consejo de Jaime e instalamos el plugin:
script/plugin install http://code.openrain.com/rails/action_mailer_tls/
Siguiendo con lo que dice en su blog:
Una vez instalado, en la carpeta /vendor/plugins/action_mailer_tls/sample encontrarás dos ficheros. Copia smtp_gmail.rb dentro de tu carpeta /config/initializers, y copia mailer.yml.sample a tu carpeta /config, renombrándolo a mailer.yml. Finalmente, edita este fichero para usar el user_name y password de la cuenta de correo de Gmail que quieras usar… reinicia el servidor y… ya puedes enviar correos a través de Gmail desde tu aplicación!
El fichero config/mailer.yml que en nuestro caso hemos creado es de la forma:
:address: smtp.gmail.com
:port: 587
:user_name: youraccount@yourdomain.com
:password: xxxx
:authentication: :plain
en esto debes sustituir xxxx por la password de tu cuenta y youraccount@yourdomain.com por tu cuenta de correo asociada a Google Apps.
Continuamos creando el mailer para poder enviar los mails:
weemac:blogg jenaiz$ script/generate mailer commentmailer
exists app/models/
create app/views/commentmailer
exists test/unit/
create test/fixtures/commentmailer
create app/models/commentmailer.rb
create test/unit/commentmailer_test.rb
Debemos crear el método con el que vamos a hacer el envio del mail que situamos en el Mailer recién creado:
class Commentmailer < ActionMailer::Base
def comment(comment)
@recipients = 'jesus.navarrete@gmail.com'
@from = 'support@jenaiz.com'
headers "Reply-to" => "support@jenaiz.com"
@subject = "jenaiz.com ha recibido un comentario"
@sent_on = Time.now
@content_type = "text/html"
body[:name] = comment.author
body[:text] = comment.body
end
end
Ahora, necesitamos crear los templates, dado que hemos especificado como content_type text/html, crearemos dos templates en views/commentmailer: comment.text.plain.erb y comment.text.html.erb
comment.text.html.erb jenaiz.com ha recibido un comentario de: <%= @name %>. Diciendo: <%= @text %> Producido en la entrada: <%= @entry%>comment.text.plain.erb jenaiz.com ha recibido un comentario de: <%= @name %>. Diciendo: <%= @text %> Producido en la entrada: <%= @entry%>
Ahora hacemos la llamada al método del mailer, basta con:
Commentmailer.deliver_comment(comment)
en nuestro caso esto se meterá dentro del código del comentario normal:
def comment
if verify_recaptcha
@entry = Entry.find(params[:id])
comment = Comment.new(params[:comment])
@entry.add_comment comment
comment.save!
Commentmailer.deliver_comment(comment)
flash[:notice] = "Comentario añadido con éxito"
else
flash[:error] = "There was an error with the recaptcha code below. Please re-enter the code and click submit."
end
redirect_to :action => 'show'
end
Desde ahora podremos recibir correos cada vez que un comentario sea publicado en nuestra web, además de tener disponible esta posibilidad para otras acciones.
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.