with rails que guide generate enviar correo ruby-on-rails ruby ruby-on-rails-4 actionmailer contact-form

ruby-on-rails - que - rails send email with attachment



Formulario de contacto de Mailer en Rails 4 (1)

Estoy intentando crear un formulario de contacto en Rails 4, donde el formulario toma un nombre, correo electrónico y cuerpo y lo envía a mi dirección de correo electrónico. Al hacer clic en "Enviar", la aplicación vuelve a la página de contacto correctamente, pero no parece que se envíe un correo electrónico.

rutas.rb

match ''/send_mail'', to: ''contact#send_mail'', via: ''post''

contact_email.html.erb

<!DOCTYPE html> <html> <head> <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> <%= javascript_include_tag "application", "data-turbolinks-track" => true %> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <p>You have received the following email from <%= "#{ @name } (#{ @email }):" %></p> <p><%= @body %></p> </body> </html>

contact_controller.rb

def send_mail name = params[:name] email = params[:email] body = params[:comments] ContactMailer.contact_email(name, email, body).deliver redirect_to contact_path, notice: ''Message sent'' end

contact_mailer.rb

class ContactMailer < ActionMailer::Base default to: # my email address def contact_email(name, email, body) @name = name @email = email @body = body`enter code here` mail(from: email, subject: ''Contact Request'') end end

contact.html.erb

<div class="container-content"> <div class="container"> <%= form_tag(send_mail_path) do %> <div class="form-group"> <%= label_tag ''name'', ''Name'' %> <%= text_field_tag ''name'', nil, class: ''form-control'', placeholder: ''Your Name'' %> </div> <div class="form-group"> <%= label_tag ''email'', ''Email'' %> <%= email_field_tag ''email'', nil, class: ''form-control'', placeholder: ''Your Email Address'' %> </div> <div class="form-group"> <%= label_tag ''comments'', ''Comments'' %> <%= text_area_tag ''comments'', nil, class: ''form-control'', rows: 4, placeholder: ''Comments...'' %> </div> <%= submit_tag nil, class: ''btn btn-default btn-about pull-right'' %> <% end %> </div> </div>

aplicacion.rb

config.action_mailer.delivery_method = :sendmail config.action_mailer.perform_deliveries = true config.action_mailer.raise_delivery_errors = true


Resultó que no había configurado mi aplicación Heroku con un servicio SMTP externo (ya que nunca había hecho nada con el correo electrónico antes, no sabía cómo hacerlo). Ya que estoy relativamente familiarizado con MailChimp, y especialmente porque su servicio Mandrill tiene un nivel gratuito (estoy creando esta aplicación para una organización de estudiantes), fácilmente agregué Mandrill a mi aplicación Heroku e incluí las siguientes configuraciones en application.rb :

ActionMailer::Base.smtp_settings = { address: ''smtp.mandrillapp.com'', port: 587, user_name: ENV[''MANDRILL_USERNAME''], password: ENV[''MANDRILL_APIKEY''] }

Donde los vars ENV fueron establecidos automáticamente por el complemento.