所以我试图通过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: '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 地址放入我可以看到的控制台日志中,但无法让它通过电子邮件发送。谁能帮我看看我的代码中做错了什么?
最佳答案
这是因为 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();
}
);
}
关于email - 使用 node.js 在电子邮件中发送 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9868254/