2012-03-26 15 views
1

私はnode.jsから私のIPアドレスを自分自身に送信しようとしていますが、今のところ空いています。これまでのところ、私のコードは次のようになります:node.jsを使って電子メールでIPアドレスを送信する

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

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: 'receivi[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(); 
    } 
); 

これまでのところ、電子メールは送信されていますが、IPアドレスは挿入されません。それは私が見ることができるコンソールログに適切なIPアドレスを置きますが、電子メールで送信することはできません。私のコードで何が間違っているのか誰でも助けてくれますか?

+0

は、なぜあなたは代わりに、クロスOSである 'os.networkInterfaces'の "実行" を使用していますか? ソース:http://nodejs.org/docs/latest/api/os.html#os_os_networkinterfaces – seppo0010

答えて

0

これは、execがipを返す前にsend_mail関数が開始されるためです。

これで、execがipを返すとメールを送信し始めます。

これは動作するはずです:

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

これは魅力的です。ありがとうございました。node.jsで何をやっているのか分かりませんでした.- – noiz77

+0

あなたは大歓迎です!すべての始まりは難しいです:D – stewe

関連する問題