Отправить IP-адрес по электронной почте с node.js - PullRequest
1 голос
/ 26 марта 2012

Итак, я пытаюсь отправить себе свой IP-адрес через node.js и до сих пор пришел с пустыми руками. Пока мой код выглядит так:

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: 'sendingemail@gmail.com',
   pass: 'mypass'
}

email.send_mail({
   sender: 'sendingemail@gmail.com',
   to: 'receivingemail@gmail.com',
   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-адрес в журнал консоли, который я вижу, но не могу его отправить по электронной почте. Может ли кто-нибудь помочь мне увидеть, что я делаю неправильно в моем коде?

1 Ответ

0 голосов
/ 26 марта 2012

Это потому, что функция send_mail запускается до того, как exec вернул IP-адрес.

Так что просто начните отправлять почту, как только 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: 'sendingemail@gmail.com',
       pass: 'mypass'
    }

    email.send_mail({
       sender: 'sendingemail@gmail.com',
       to: 'receivingemail@gmail.com',
       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();
       }
    );
}
...