2017-04-20 8 views
1

Ich habe eine einfache Website auf Node JS-Framework mit einem PHP-Mailer gebaut, um mit meinem Kontaktformular zu behandeln. Ich kann es anscheinend nicht zum Laufen bringen und ich frage mich, ob es ein inhärentes Problem mit Node JS selbst gibt, das den PHP-Code nicht verarbeiten kann. Es verfügt über eine HTML-Seite, index.html, die einen das Kontaktformular Code enthält:Node JS App verarbeitet PHP-Mailer-Code

<div class="container"> 
     <div class="row"> 
      <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1"> 
       <h2 class="featurette-heading" style="text-align: center;">Message</h2> 
       <h3 class="text-muted">Want to book an appointment? Send me a message and I'll contact you. Make sure you include your name, phone number, email, and when you'd like to book. It's that easy!</h3> 
       <form name="sentMessage" id="contactForm" action="contact_me.php" method="post" novalidate> 
        <div style="background-color: white; border: 1px solid #0085a1;" class="row control-group"> 
         <div class="form-group col-xs-12 floating-label-form-group controls"> 
          <label></label> 
          <input type="text" class="form-control" placeholder="Name" id="name" name="name" required data-validation-required-message="Please enter your name."> 
          <p class="help-block text-danger"></p> 
         </div> 
        </div> 
        <div style="background-color: white; border: 1px solid #0085a1;" class="row control-group"> 
         <div class="form-group col-xs-12 floating-label-form-group controls"> 
          <label></label> 
          <input type="email" class="form-control" placeholder="Email Address" id="email" name="email" required data-validation-required-message="Please enter your email address."> 
          <p class="help-block text-danger"></p> 
         </div> 
        </div> 
        <div style="background-color: white; border: 1px solid #0085a1;" class="row control-group"> 
         <div class="form-group col-xs-12 floating-label-form-group controls"> 
          <label></label> 
          <input type="tel" class="form-control" placeholder="Phone Number" id="phone" name="phone" required data-validation-required-message="Please enter your phone number."> 
          <p class="help-block text-danger"></p> 
         </div> 
        </div> 
        <div style="background-color: white; border: 1px solid #0085a1;" class="row control-group"> 
         <div class="form-group col-xs-12 floating-label-form-group controls"> 
          <label></label> 
          <textarea rows="5" class="form-control" placeholder="Message" id="message" name="message" required data-validation-required-message="Please enter a message."></textarea> 
          <p class="help-block text-danger"></p> 
         </div> 
        </div> 
        <br> 
        <div id="success"></div> 
         <div class="row"> 
          <div class="form-group col-xs-12"> 
           <button type="submit" class="btn btn-primary">Send</button> 
          </div> 
         </div> 
        </div> 
       </form> 
      </div> 
     </div> 
    </div> 

Zur gleichen Ordnerebene gibt es eine contact_me.php Datei:

<?php 
// Check for empty fields 
if(empty($_POST['name'])  || 
    empty($_POST['email'])  || 
    empty($_POST['phone'])  || 
    empty($_POST['message']) || 
    !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) 
    { 
    echo "No arguments Provided!"; 
    return false; 
    } 

$to = '[email protected]'; // Add your email address inbetween the '' replacing [email protected] - This is where the form will send a message to. 
$email_subject = "Website Contact Form: $name"; 
$email_body = "You have received a new message from your website contact form.\n\n"."Here are the details:\n\nName: $name\n\nEmail: 
$email_address\n\nPhone: $phone\n\nMessage:\n$message"; 
$headers = "From: [email protected]\n"; // This is the email address the generated message will be from. We recommend using something like [email protected] 
$headers = "Reply-To: $email_address"; 
mail($to,$email_subject,$email_body,$headers); 
return true;    
?> 

Immer, wenn ich getroffen " submit "am unteren Rand meines Formulars, bekomme ich den folgenden Fehler:" Kann nicht /contact_me.php POST ". Nach einigen Experimenten fügte ich eine echo-Anweisung in den php-Code ein (ich habe ein sehr begrenztes Verständnis von PHP) und stellte fest, dass der PHP-Server nicht läuft, während der Knoten-Server läuft. Wenn dies der Fall ist, was kann ich tun, um dieses Problem zu beheben? Gibt es etwas in einer route.js oder index.js (unter dem Knoten Express Server-Ordner), die ich hinzufügen muss, damit der PHP-Mailer funktioniert?

+0

Wie betreiben Sie Ihren Knoten? und wo ist deine PHP-Datei? Wer bearbeitet Anfragen für den PHP? – Panther

+0

und warum können Sie die E-Mail von Knoten senden? Warum brauchst du PHP um es zu tun? – Panther

+0

1. Kommentieren Sie die Strings mit 'ersetzen [email protected] ...' und 'message to'. 2. Der Header' Reply-To: $ email_address' muss ohne Zeilenumbrüche sein. – Deadooshka

Antwort

0

Ich lerne NodeJS gleich. Warum möchten Sie nicht Nodemailer mit ExpressJS verwenden? Es ist einfach zu bedienen und einzurichten.

+0

OK, ich versuche herauszufinden, Nodemailer. Unter https://nodemailer.com/usage/. Ich habe den Knotenmailer über '$ npm install nodemailer 'in das' node_modules' Verzeichnis installiert. Anschließend wird Ihnen mitgeteilt, dass Sie ein Transportobjekt mithilfe von SMTP oder ähnlichem erstellen sollen. Ein Codebeispiel wird angegeben, aber es sagt Ihnen nicht, wohin der Code geht (in welcher Datei, in welchem ​​Ordner). Es erklärt auch nicht, wie es mit dem Formular in meinem index.html verdrahtet ist. Können Sie mir sagen, wohin der Transport-Objekt-Code geht? Ich schaue mir einige Tutorials an, aber alle lassen diese wichtigen Details aus. – jcbridwe

+0

Schauen Sie [in mein Repo] (https://github.com/PinkyRabbit/usenodemailer) Ich habe funktionierendes Beispiel –

+0

Das ist großartig, danke! Das Transportobjekt und die Konfiguration befinden sich also im Wesentlichen in der Datei index.js im Ordner routes in Express. Das ist genau die Antwort, nach der ich gesucht habe. Ich arbeite daran, es jetzt angeschlossen zu bekommen. – jcbridwe