Formulaire de Contact Mailer in Rails 4

j'essaye de construire un formulaire de contact dans Rails 4, où le formulaire prend un nom, email, et corps et l'envoie à mon adresse email. En cliquant sur "Soumettre", l'application redirige correctement vers la page de Contact, mais aucun e-mail ne semble être envoyé.

itinéraires.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>

de l'application.rb

config.action_mailer.delivery_method = :sendmail
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
20
demandé sur sethfri 2013-12-25 10:33:01

1 réponses

il s'est avéré que je n'avais pas configuré mon application Heroku avec un service SMTP externe (puisque je n'ai jamais rien fait avec le courrier électronique avant, Je ne savais pas faire cela). Depuis que je suis relativement familier avec MailChimp, et surtout depuis que leur service Mandrill a un niveau libre (je construis cette application pour une organisation étudiante), J'ai facilement ajouté Mandrill à mon application Heroku et inclus les paramètres suivants dans application.rb :

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

où les valeurs de L'ENV ont été réglées automatiquement par l'add-on.

14
répondu sethfri 2013-12-26 22:05:03