CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème Heroku Internal server error

boyd-fowler
boyd-fowler
Niveau 10
28 février 2015 à 10:45:35

Voilà mon problème, j'ai mis à jour mon site web sous sinatra en refaisant le code front avec React et depuis quand je veux faire un envoi de mail bah les erreurs dans les champs noms, prénoms et mails me renvoient un Internal server error au lieu du message attendu qui lui s'affiche bien quand le champ message est vide. J'ai réessayé de remettre le formulaire en mode normal mais ça ne change pas grand chose. C'est pas génant en soit car un formulaire bien rempli m'envoie le mail mais quand même.
Voici les différents codes
La page d'erreurs:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Erreur envoi</title>
  <style type="text/css"> 
    body {
      background-color: white;
      color: #333333;
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 36px;
      line-height: 18px;
      font-size: 14px;
    }
    .section {
      margin-bottom: 36px;
      color: #222222;
    }
    .section h1 {
      font-size: 26px;
      background-color: #dad8e4;
      padding: 18px 22px 15px 22px;
      margin: 0;
      overflow: hidden;
    }
    .article {
      border: 4px solid #dad8e4;
      padding: 24px 18px 18px 18px;
      font-size: 14px;
    }
  </style>
</head>
<body>
    <div class="section">
      <h1>Erreur d'envoi</h1>
      <div class="article"> 


<p>Il y a une erreur dans votre formulaire. Vous n'avez rien rempli dans le champs <%= @field %> </p>

 <a href="http://www.******.fr">Accueil</a>
          
          
           </div> 
    </div>
</body>
</html>

L'extrait de code Ruby pour les mails:

post '/contact' do 
    require 'pony'
     Pony.mail(
      :from => params[:nom] +params[:prenom] + "<" + params[:email] + ">",
      :to => '******@gmail.com',
      :subject => "Vous avez un message de " + params[:nom] +params[:prenom],
      :body => params[:message],
    
      :via => :smtp,
      :via_options => { 
        :address              => 'smtp.sendgrid.net', 
        :port                 => '587', 
        :enable_starttls_auto => true, 
        :user_name            => ENV['SENDGRID_USERNAME'], 
        :password             => ENV['SENDGRID_PASSWORD'], 
        :authentication       => :plain, 
        :domain               => ENV['SENDGRID_DOMAIN']
      })

   
    redirect "/contact-error/name" if params[:nom].empty?
    redirect "/contact-error/email" if params[:email].empty?
    redirect "/contact-error/message" if params[:message].empty?

    erb :contact_success



    
end

get '/contact-error/:field' do |field|
    @field = field
    erb :contact_error
end
get('/success') do

	erb :success
end
var contact = React.createClass({displayName: "contact",
  render: function() {
    return (

      React.createElement("section", {id: "contact"}, 
        React.createElement("div", {className: "row"}, 
          React.createElement("div", {className: "col-xs-12 col-lg-1"}, 
            React.createElement("div", {className: "section-title"}, 
              React.createElement("div", {className: "section-icon"}, 
                React.createElement("i", {className: "fa fa-envelope"})
              ), 
              React.createElement("div", {className: "title"}, 
                React.createElement("h4", null, "Contact")
              )
            )
          ), 
          React.createElement("div", {className: "col-xs-12 col-lg-11"}, 
            React.createElement("div", {className: "box-holder exp-box"}, 
              React.createElement("div", {className: "map-holder"}, 
                React.createElement("div", null
                )
              ), 
              React.createElement("div", {className: "contact-form-holder row"}, 
                React.createElement("div", {className: "col-xs-12 col-sm-8"}, 
                  React.createElement("div", {className: "message-box"}), 
                  React.createElement("form", {action: "/contact", method: "post", id: "formulaire"}, 
                    React.createElement("fieldset", null, 
                      React.createElement("div", {className: "control-group"}, 
                        React.createElement("div", {className: "controls"}, 
                          React.createElement("label", {htmlFor: "name", size: 25}, " Nom :"), 
                          React.createElement("input", {id: "nom", type: "text", name: "nom"})
                        )
                      ), 
                      React.createElement("div", {className: "control-group"}, 
                        React.createElement("div", {className: "controls"}, 
                          React.createElement("label", {htmlFor: "firstname"}, " Prenom :"), 
                          React.createElement("input", {id: "prenom", type: "text", name: "prenom"})
                        )
                      ), 
                      React.createElement("div", {className: "control-group"}, 
                        React.createElement("div", {className: "controls"}, 
                          React.createElement("label", {htmlFor: "email"}, "Email :"), 
                          React.createElement("i", null), 
                          React.createElement("input", {id: "email", type: "text", name: "email"})
                        )
                      ), 
                      React.createElement("div", {className: "control-group"}, 
                        React.createElement("div", {className: "controls"}, 
                          React.createElement("label", {htmlFor: "to"}, "Message :"), 
                          React.createElement("i", {className: "fa fa-pencil"}), 
                          React.createElement("textarea", {id: "message", name: "message", rows: 5, cols: 5, className: "required col-xs-12"})
                        )
                      ), 
                      React.createElement("div", {className: "ribbon"}, 
                        React.createElement("input", {className: "boutons", type: "submit", defaultValue: "Envoyer"}), 
                        React.createElement("div", {id: "loading"}, 
                          React.createElement("img", {alt: true, src: "images/loader.gif"})
                        ), 
                        React.createElement("div", {className: "arrow-left"})
                      )
                    )
                  )
                ), 
                React.createElement("div", {className: "col-xs-12 col-sm-4"}, 
                  React.createElement("div", {className: "desc"}, 
                    React.createElement("p", null, 
                      "Vous pouvez me contacter via le formulaire suivant."
                    )
                  ), 
                  React.createElement("div", {className: "round-row"}, 
                    React.createElement("i", {className: "fa fa-envelope"}), 
                    React.createElement("span", null, "****@gmail.com")
                  )
                )
              )
            )
          )
        ))
    );
  }
});

var element = React.createElement(contact);
React.render(element ,document.getElementById('contact'));

J'ai aussi un script Jquery qui est censé faire une prévérification coté client qui ne fonctionne plus alors qu'il est bien chargé.

Message édité le 28 février 2015 à 10:49:24 par boyd-fowler
vava740
vava740
Niveau 10
28 février 2015 à 10:50:52

Que disent les logs serveur ?

boyd-fowler
boyd-fowler
Niveau 10
28 février 2015 à 11:05:47

2015-02-28T10:03:55.096377+00:00 app[web.1]: 81.66.50.140 - - [28/Feb/2015 10:03:55] "POST /contact HTTP/1.1" 500 30 2.5054

2015-02-28T10:03:55.098498+00:00 heroku[router]: at=info method=POST path="/contact" host=www.¨¨¨¨¨¨¨¨.fr request_id=1529b71c-68b7-4e60-b52f-5fd3692312fd fwd="81.66.50.140" dyno=web.1 connect=0ms service=2727ms status=500 bytes=326
2015-02-28T10:03:55.095547+00:00 app[web.1]: Net::SMTPSyntaxError - 501 Syntax error
2015-02-28T10:03:55.095556+00:00 app[web.1]: /app/vendor/ruby-2.2.0/lib/ruby/2.2.0/net/smtp.rb:964:in `check_response

Voilà les logs les plus parlant je pense :(

vava740
vava740
Niveau 10
28 février 2015 à 11:23:53
Net::SMTPSyntaxError - 501 Syntax error

Jette un oeil à ça : http://stackoverflow.com/questions/5998758/email-with-rails-3-and-heroku-netsmtpsyntaxerror-501-syntax-error

boyd-fowler
boyd-fowler
Niveau 10
28 février 2015 à 12:07:07

J'ai déjà lu ça et ça ne m'aide pas plus que ça étant donné que c'est pour rails et que mon code était parfaitement valide avant y a pas de raison qu'il ne le soit plus d'un coup , je n'ai aucune erreur dans le from.

vava740
vava740
Niveau 10
28 février 2015 à 12:14:01

Le fait que ça soit Rails ou Sinatra n'importe peu, l'essentiel est que ça passe par check_response dans smtp.rb dans les deux cas, avec la même erreur.

Bref, si ton from est okay, là le mieux c'est de tenter de reproduire l'erreur avec le moins de code possible pour mieux la cibler.

Le seul code que tu as qui fait indirectement appel à smtp.rb semble être l'appel à la fonction Pony.mail, donc fais un fichier de test avec juste un appel à cette fonction, en mettant en dur les valeurs exactes que tu passais avec ton formulaire. Est-ce que ça reproduit l'exception ?

boyd-fowler
boyd-fowler
Niveau 10
28 février 2015 à 12:26:06

Avec mon formulaire je ne passe aucune valeur ,c'est ça le but du code , si le mec ne remplit pas le formulaire il est censé lui être indiqué qu'il doit le remplir ,ça fonctionnait très bien avant et l'envoi de mails marche ce qui me semble encore plus curieux.

boyd-fowler
boyd-fowler
Niveau 10
28 février 2015 à 12:39:49

https://image.noelshack.com/fichiers/2015/09/1425123497-capture-d-ecran-2015-02-28-a-12-37-55.png l'ancienne version me donne bien le bon résultat . Bizarre je sens que ça va me saouler à fond et que ça restera comme ça.

boyd-fowler
boyd-fowler
Niveau 10
28 février 2015 à 12:49:12

Bon j'ai l'erreur uniquement quand je met mon nouvel index sous react :-( Incompréhensible honnêtement :-(

vava740
vava740
Niveau 10
28 février 2015 à 13:24:02

Euh j'avais pas fait gaffe, mais si tu testais avec un formulaire vide en t'attendant à avoir une erreur, ça ne peut pas marcher avec ton code ; tu envoies le mail avant d'avoir vérifié les paramètres de formulaire…

Pony.mail(
  :from => params[:nom] +params[:prenom] + "<" + params[:email] + ">",
  ...
})
  
redirect "/contact-error/name" if params[:nom].empty?

Ici même si le nom est vide, tu appelleras quand même Pony.mail avec un mauvais :from, (d'où l'erreur), avant de faire la vérification (qui n'a jamais lieue puisque l'exception est lancée avant).

boyd-fowler
boyd-fowler
Niveau 10
28 février 2015 à 14:05:07

Ah ok merci je vais essayer de corriger ça et sinon hésite pas à m'indiquer ta méthode en tout cas merci du coup de main ça doit être ça.

boyd-fowler
boyd-fowler
Niveau 10
28 février 2015 à 15:19:58

Bon encore un grand merci vava , j'ai corrigé l'erreur maintenant le code marche nickel.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment