Javascript Nodejs和NodeEmailr是否接收用户ip地址?

Javascript Nodejs和NodeEmailr是否接收用户ip地址?,javascript,node.js,Javascript,Node.js,您好,我想回显此命令request.connection.remoteAddress 在node.js中|回显用户ip地址是否有人可以帮助 我正试图通过NodeEmailer接收带有此代码的联系人电子邮件 const bodyParses = require('body-parser'); const exphbs = require('express-handlebars'); const path = require('path'); const nodemailer = require('

您好,我想回显此命令
request.connection.remoteAddress
在node.js中|回显用户ip地址是否有人可以帮助

我正试图通过NodeEmailer接收带有此代码的联系人电子邮件

const bodyParses = require('body-parser');
const exphbs = require('express-handlebars');
const path = require('path');
const nodemailer = require('nodemailer');

const app = express();



// View engine setup
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');

// Main Folder
app.use('/public', express.static(path.join(__dirname, 'public')));
//Body Parses Middleware
app.use(bodyParses.urlencoded({ extended: false}));
app.use(bodyParses.json());


app.get('/', (req, res) => {
  res.render('contact', {layout: false});
});

app.post("/send", async (req,res,next) => {
  const output = `
  <p>You have a new contact requiest</p>
  <h3>Detajet</h3>
  <ul>
  <li>Name: ${req.body.name}</li>
  <li>Comapny: ${req.body.company}</li>
  <li>Email: ${req.body.email}</li>
  <li>Phone: ${req.body.phone}</li>
  <li>${res.send(ip+"\n")}</li>
  </ul>
  <h3>Message</h3>
  <p>${req.body.message}</p>
  `;
  let transporter = nodemailer.createTransport({
    host: "smtp.gmail.com",
    port: 465,
    secure: true, // true for 465, false for other ports
    auth: {
      user: 'user@gmail.com', // generated ethereal user
      pass: 'password' // generated ethereal password
    },
    tls:{
      rejectUnauthorized:false
    }
  });

  // send mail with defined transport object
  let info = await transporter.sendMail({
    from: '"Tipi" <aj.production15@gmail.com>', // sender address
    to: "test@gmail.com", // list of receivers
    subject: "test", // Subject line
    text: "Hello world?", // plain text body
    html: output // html body
  });

  console.log("Message sent: %s", info.messageId);
  console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));

  res.render('tjetra', {layout: false});

main().catch(console.error);
});

app.listen(3000, () => console.log('Server started...'));
constbodyparses=require('body-parser');
const exphbs=require('express-handlebar');
const path=require('path');
const nodemailer=require('nodemailer');
常量app=express();
//查看引擎设置
发动机附件(“把手”,exphbs());
应用程序集(“查看引擎”、“把手”);
//主文件夹
app.use('/public',express.static(path.join('public'));
//Body解析中间件
use(bodyParses.urlencoded({extended:false}));
use(bodyParses.json());
应用程序获取(“/”,(请求,请求)=>{
res.render('contact',{layout:false});
});
app.post(“/send”),异步(请求、恢复、下一步)=>{
常量输出=`
你有一个新的联系人要求

德塔杰
  • 名称:${req.body.Name}
  • 公司:${req.body.company}
  • 电子邮件:${req.body.Email}
  • 电话:${req.body.Phone}
  • ${res.send(ip+“\n”)}
消息 ${req.body.message}

`; 让transporter=nodeEmailer.createTransport({ 主机:“smtp.gmail.com”, 港口:465, 安全:true,//对于465为true,对于其他端口为false 认证:{ 用户:'user@gmail.com“,//生成的ethereal用户 pass:'password'//生成的以太密码 }, tls:{ 拒绝:错误 } }); //使用定义的传输对象发送邮件 let info=wait transporter.sendMail({ 发件人:“'Tipi',//发件人地址 至:test@gmail.com“,//接收者列表 主题:“测试”//主题行 text:“你好,世界?”,//纯文本正文 html:output//html正文 }); console.log(“发送的消息:%s”,info.messageId); log(“预览URL:%s”,nodeEmailer.getTestMessageUrl(info)); res.render('tjetra',{layout:false}); main().catch(console.error); }); app.listen(3000,()=>console.log('Server started…');
因此,当我收到要获取的电子邮件和用户ip时,我会尝试。 我想我应该使用代码:request.connection.remoteAddress,但我不知道当用户提交给我的表单和用户ip地址时如何连接。

您需要更准确地说明您想做什么,但我会尽力帮助您……如果我理解清楚,您希望在邮件正文中发送ip,使用
nodemailer

首先是如何在
node.js
中获取ip。request元素有一个带有express(您使用)的ip参数,因此只需使用:

const ip_address = req.ip;  
然后通过
nodemailer
发送:

let transporter = nodeMailer.createTransport({
host: 'smtp.free.fr',
port: 25,
secure: false
});
let mailOptions = {
from: '"Your subject" <no-reply@yourhost.com>', 
to: 'emailReceiver@receiver.com',
subject: 'Welcome!',
text: 'Here is your text + ip: '+ ip_address, 
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message %s sent: %s', info.messageId, info.response);
});
let transporter=nodeEmailer.createTransport({
主机:“smtp.free.fr”,
港口:25,
安全:错误
});
让邮件选项={
发件人:“‘您的主题’”,
致:'emailReceiver@receiver.com',
主题:“欢迎!”,
text:'这是您的text+ip:'+ip_地址,
};
transporter.sendMail(邮件选项,(错误,信息)=>{
如果(错误){
返回console.log(错误);
}
console.log('发送的消息%s:%s',info.messageId,info.response);
});

还要知道,在本地主机上运行此操作时,您的ip将始终返回:
::1

iptoy
功能没有意义。你甚至都没用它。它会将响应发送回客户端,而不是将ip放入电子邮件中(这可能是您想要的?)。我补充说,错误地测试以修复ip问题,这是否回答了您的问题?嘿,我把
const ip\u address=req.ip放在哪里在我的code@MoekUgD在发送邮件之前,在
app.post('/send')
中声明此变量,然后再声明
const output
,如果它解决了您的问题,请不要忘记将此标记为正确答案或对其进行投票。您好,当我收到电子邮件时,它说ip::1这是正常的,您正在本地主机上运行它,它将始终返回::1。部署你的应用程序时,
req.ip
将返回一个真实的ip地址。嘿,我使用firebase当我上传它要求我上传公用文件夹中的文件时,我这样做了,但当我转到网站/firebase时,它显示未找到/When i do website.com/views/contact.handlebar,它显示但不发送电子邮件