2016-07-27 7 views
0

Ich versuche, ein Kontaktformular in Rails einzurichten, mit einem Mailer und Sendgrid. Ich betreibe die App auf Heroku.E-Mails nicht ankommen - Rails, Heroku, Sendgrid

Ich denke, dass die Konfigurationsdateien für Entwicklung und Produktion in Ordnung sind, da ich Devise für die Authentifizierung verwende und seine E-Mails ohne Probleme gesendet und empfangen werden. Das Problem hängt also mit dem Mailer zusammen, den ich erstellt habe.

Das Terminal zeigt an, dass die E-Mails in der Entwicklung ausgelöst werden, und in der Produktion sagen mir die Heroku-Logs, dass sie gesendet werden. Alles sieht gut aus, aber die E-Mails kommen nicht an.

Danke für jede Rückmeldung.

Dies ist der Code:

free_trial_form

<%= form_tag("/public_pages/contato_free_trial", :id => 'free_trail_form') do %> 
     <div class="form-group"> 
      <%= text_field_tag :nome,nil, placeholder:"Seu nome", class: "form-control", id:"free_trail_form_nome_field" %> 
     </div> 
     <div class="form-group"> 
      <%= email_field_tag :email,nil, placeholder:"Seu e-mail", class: "form-control", id:"free_trail_form_email_field" %> 
     </div> 
     <div class="form-group"> 
      <%= text_area_tag :conteudo,nil, placeholder:"Veja na prática como é o nosso ensino. Digite aqui os horários mais confortáveis para você!", class: "form-control",id:"free_trail_form_text_area" %> 
     </div> 

     <div class="free_trail_form_area_btns"> 
      <%= button_tag(type:"submit", id: "free_trail_form_btn", class:"btn btn-danger",:onclick => "alert('Mensagem enviada. Obrigado!');") do %> 
         <span id="free_trail_form_btn_icon" class="glyphicon glyphicon-calendar"></span> 
         MARCAR AULA GRATUITA 
      <% end %> 
      <%=link_to(escola_path,id:"free_trail_form_escola_link") do %> 

       <button id="free_trail_form_escola_link_btn" class="btn btn-primary"> 
        OU SAIBA MAIS AGORA <span id="free_trail_form_escola_link_icon" class="glyphicon glyphicon-arrow-right"></span> 
       </button> 
      <% end %> 
     </div> 
    <% end %> 

public_pages_controller/contato_free_trial

def contato_free_trial 
    @nome = params[:nome] 
    @email = params[:email] 
    @conteudo = params[:conteudo] 
    PublicPagesMailer.free_trial_email(@nome,@email,@conteudo).deliver_now 
    redirect_to(:back) 
end 

public_pages_mailer

class PublicPagesMailer < ApplicationMailer 

def free_trial_email(nome,email,conteudo) 
    @nome = nome 
    @email = email 
    @conteudo = conteudo 
    mail(from: @email, to: '[email protected]', subject: "Contato de Prospecto") 
end 

Produktion Konfigurationsdatei

ActionMailer::Base.smtp_settings = { 
:address => 'smtp.sendgrid.net', 
:port => '587', 
:authentication => :plain, 
:user_name => ENV['SENDGRID_USERNAME'], 
:password => ENV['SENDGRID_PASSWORD'], 
:domain => 'heroku.com', 
:enable_starttls_auto => true 
} 
config.cache_classes = true 

config.eager_load = true 

config.consider_all_requests_local  = false 

config.action_controller.perform_caching = true 

config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? 

config.assets.js_compressor = :uglifier 

config.assets.compile = true 

config.assets.digest = true 

config.log_level = :debug 

config.i18n.fallbacks = true 

config.active_support.deprecation = :notify 

config.log_formatter = ::Logger::Formatter.new 

config.active_record.dump_schema_after_migration = false 

config.action_mailer.default_url_options = { :host => 'myapp.herokuapp.com' } 

Antwort

0

Sind Sie wirklich sicher, dass die E-Mail in der Produktionsumgebung korrekt ist.

Fügen Sie das oben zu Ihrem Code in Ihrer Produktionskonfigurationsdatei hinzu, Sie haben nur die erste Zeile, aber nicht die zweite. Verschieben Sie die erste oben und fügen Sie den anderen Code hinzu.

config.action_mailer.default_url_options = {host: "http://yourdomain/"} 

config.action_mailer.delivery_method = :smtp 

ich vorschlagen kann, verwenden Sie "hebeln-Schienen" und "hebeln-Navigation". In den Methoden, die die E-Mail senden, werden Sie etwas wie binding.pry setzen und dann in Ihrer Konsole werden Sie jeden Schritt sehen.

Sie können die Fehler Ihres Mailers auch erhöhen. Überprüfen Sie in Ihrer Produktionsumgebung, ob Sie etwas in der Art haben: config.action_mailer.raise_delivery_errors = false und ändern Sie den Wert in true.

+0

Nein, ich habe versucht, was Sie vorgeschlagen, aber bisher ohne Erfolg. Ich weiß wirklich nicht, was ich tun soll. Alles scheint in Ordnung, aber keine E-Mail kommt jemals an –

+0

Können Sie die Ausgabe von Ihnen Heroku-Protokolle kopieren und einfügen? Btw, überprüfen Sie die heroku-Anmeldeinformationen für Sendgrid eingerichtet. In Ihrem Heroku-Panel denke ich ist: "Einstellungen" und klicken Sie dann auf "Reveal config vars". Nur um sicher zu sein, dass Sie die richtigen Anmeldeinformationen haben. –

Verwandte Themen