2012-03-26 7 views
1

Also ich versuche mir meine IP-Adresse über node.js zu schicken und bin bis jetzt leer ausgegangen. Bis jetzt sieht mein Code wie folgt aus:Sende IP-Adresse in Email mit node.js

Bisher sendet es die E-Mail, aber es fügt nie die IP-Adresse ein. Es fügt die entsprechende IP-Adresse in das Konsolenprotokoll ein, das ich sehen kann, kann es aber nicht in einer E-Mail senden. Kann mir jemand helfen, zu sehen, was ich in meinem Code falsch mache?

+0

Warum Sie "exec" statt 'os.networkInterfaces' verwenden, das Cross-o ist? Quelle: http://nodejs.org/docs/latest/api/os.html#os_os_networkinterfaces – seppo0010

Antwort

0

Das ist, weil die send_mail Funktion beginnt, bevor die exec die IP zurückgegeben hat.

So starten Sie einfach die E-Mail, sobald Exec die IP zurückgegeben hat.

sollte diese Arbeit:

var exec = require("child_process").exec; 
var ipAddress; 
var child = exec("ifconfig | grep -m 1 inet", function (error, stdout, stderr) { 
    ipAddress = stdout; 
    start(); 
}); 
var email = require('nodemailer'); 

function start(){ 

    email.SMTP = { 
     host: 'smtp.gmail.com', 
     port: 465, 
     ssl: true, 
     user_authentication: true, 
     user: '[email protected]', 
     pass: 'mypass' 
    } 

    email.send_mail({ 
     sender: '[email protected]', 
     to: '[email protected]', 
     subject: 'Testing!', 
     body: 'IP Address of the machine is ' + ipAddress 
     }, 
     function(error, success) { 
      console.log('Message ' + success ? 'sent' : 'failed'); 
        console.log('IP Address is ' + ipAddress); 
        process.exit(); 
     } 
    ); 
} 
+0

Ja, das funktioniert wie ein Charme! Vielen Dank, wie Sie vielleicht sagen können, ich habe wirklich keine Ahnung, was ich mit node.js mache :-) – noiz77

+0

Gern geschehen! Jeder Anfang ist schwer: D – stewe