2016-07-27 7 views
0

mailerとsendgridを使用して、連絡先フォームをレールに設定しようとしています。私はHeroku上でアプリを実行しています。電子メールが届かない - Rails、Heroku、Sendgrid

私はDeviseを認証に使用しており、その電子メールは何の問題もなく送受信されているため、開発およびプロダクションの設定ファイルは大丈夫だと思います。問題は、私が作成したメーラーに関連しています。

端末では、開発中に電子メールがトリガーされていることが示され、プロダクションでは、herokuログに送信中であることが示されます。すべてがうまく見えますが、電子メールは到着していません。

フィードバックありがとうございます。

これはコードである:

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 

プロダクション設定ファイル

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' } 

答えて

0

あなたは電子メールが、本番環境で正しいことを本当によろしいです。

これをプロダクション設定ファイルのコードに追加すると、最初の行だけが表示されますが、2行目は表示されません。上記の最初のコードを移動し、もう一方のコードも追加してください。

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

config.action_mailer.delivery_method = :smtp 

"pry-rails"と "pry-navigation"を使用することをお勧めします。電子メールを送信する方法では、binding.pryのようなものを入力し、コンソールにすべての手順を表示します。

メーラーのエラーも発生させることができます。プロダクション環境で、次のようなものがあるかどうか確認してください:config.action_mailer.raise_delivery_errors = falseとtrueに変更してください。

+0

いいえ、私はあなたが示唆したものを試しましたが、今まで成功していません。私は本当に何をすべきか分からない。すべてが大丈夫ですが、メールは到着しません –

+0

あなたはherokuログの出力をコピーして貼り付けできますか? Btw、Sendgrid用に設定されたheroku認証情報を確認してください。あなたのherokuパネルでは、私は思う: "設定"をクリックし、 "設定varsを公開する"。 正しい資格情報を持っていることを確認してください。 –

関連する問題